栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

一篇吃全Nginx全面配置以及详细部署

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

一篇吃全Nginx全面配置以及详细部署

Nginx

Nginx应用场景:

    http 服务器。Nginx 是⼀个 http 服务可以独⽴提供 http 服务。可以做⽹⻚静态服务器

    虚拟主机。可以实现在⼀台服务器虚拟出多个⽹站。例如个⼈⽹站使⽤的虚拟主机

    反向代理,负载均衡。当⽹站的访问量达到⼀定程度后,单台服务器不能满⾜⽤户的请求时,需要⽤多台服务器集群可以使⽤ nginx 做反向代理。并且多台服务器可以平均分担负载,不会因为某台服务器负载⾼宕机⽽某台服务器闲置的情况

安装Nginx

这里使用docker安装nginx

    搜索nginx镜像
docker search docker
    拉取nginx镜像
docker pull nginx
    创建容器,设置端⼝映射、⽬录映射
# 在/root⽬录下创建nginx⽬录⽤于存储nginx数据信息
mkdir ~/nginx
cd ~/nginx
mkdir conf
cd conf
# 在~/nginx/conf/下创建nginx.conf⽂件,粘贴下⾯内容
vim nginx.conf

文件内容:

  user nginx;
  worker_processes 1;
  error_log /var/log/nginx/error.log warn;
  pid /var/run/nginx.pid;
  events {
  worker_connections 1024;
}
  http {
  include /etc/nginx/mime.types;
  default_type application/octet-stream;
  log_format main '$remote_addr - $remote_user [$time_local] "$request" '
  '$status $body_bytes_sent "$http_referer" '
  '"$http_user_agent" "$http_x_forwarded_for"';
  access_log /var/log/nginx/access.log main;
  sendfile on;
  #tcp_nopush on;
  keepalive_timeout 65;
  #gzip on;
  include /etc/nginx/conf.d/*.conf;
}

创建80.conf文件并添加如下内容

server {
 listen 80; # 监听的端⼝
 server_name localhost; # 域名或ip
 location / { # 访问路径配置
 root /usr/share/nginx/html;# 根⽬录
 index index.html index.htm; # 默认⾸⻚
 }
 error_page 500 502 503 504 /50x.html; # 错误⻚⾯
 location = /50x.html {
 root html;
 }
}
    创建容器
docker run -id --name=c_nginx 
-p 80:80 
-p 81:81 
-p 82:82 
-v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf 
-v $PWD/conf.d:/etc/nginx/conf.d 
-v $PWD/logs:/var/log/nginx 
-v $PWD/html:/usr/share/nginx/html 
nginx

参数说明:

p 80:80: 将容器的 80端⼝映射到宿主机的 80 端⼝-v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf: 将主机当前⽬录下的
/conf/nginx.conf 挂载到容器的 :/etc/nginx/nginx.conf。配置⽬录-v $PWD/logs:/var/log/nginx": 将主机当前⽬录下的 logs ⽬录挂载到容器
的/var/log/nginx。⽇志⽬录

    访问nginx
    即访问虚拟机ip + 80端口
Nginx静态网站部署 静态网站的部署

将静态网页文件上传到服务器的/usr/local/nginx/html下即可访问

配置虚拟主机

虚拟主机,也叫“⽹站空间”,就是把⼀台运⾏在互联⽹上的物理服务器划分成多个“虚拟”服务器。虚拟主机技术极⼤的促进了⽹络技术的应⽤和普及。同时虚拟主机的租⽤服务也成了⽹络时代的⼀种新型经济形式。

端口绑定
    简单创建静态文件
    在/usr/local/nginx下创建文件名为index的文件夹,并创建index.html文件,内容如下
this is index.html,port=81

在/usr/local/nginx下创建文件名为regist的文件夹,并创建regist.html文件,内容如下

this is regist.html,port=82
    修改Nginx配置文件: ~/nginx/config.d/port.conf(没有port.conf就创建该文件),内容如下
server {
 listen 81; # 监听的端⼝
 server_name localhost; # 域名或ip
 location / { # 访问路径配置
 root /usr/share/nginx/index;# 根⽬录
 index index.html index.htm; # 默认⾸⻚
 }
 error_page 500 502 503 504 /50x.html; # 错误⻚⾯
 location = /50x.html {
 root html;
 }
 }
 server {
 listen 82; # 监听的端⼝
 server_name localhost; # 域名或ip
 location / { # 访问路径配置
 root /usr/share/nginx/regist;# 根⽬录
 index regist.html; # 默认⾸⻚
 }
 error_page 500 502 503 504 /50x.html; # 错误⻚⾯
 location = /50x.html {
 root html;
 }
 }
    访问测试
    分别访问虚拟机ip+81和虚拟机ip+82的俩个页面,出现如下

域名绑定

域名简单来说像www.baidu.com就是一个域名

域名级别

    顶级域名:
    例如中国是cn,美国是us,日本是jp等

    工商企业得到com,top等
    例如 baidu.com

    二级域名
    例如: map.baidu.com

    三级域名
    例如: item.map.baidu.com

域名与ip绑定:

⼀个域名对应⼀个 ip 地址,⼀个 ip 地址可以被多个域名绑定

本地测试可以修改 hosts ⽂件(C:WindowsSystem32driversetc)

可以配置域名和 ip 的映射关系,如果 hosts ⽂件中配置了域名和 ip 的对应关系,不需要⾛dns 服务
器。例如: 我的虚拟机ip地址为192.168.249.4,那么在上述的hosts文件下添加如下内容

192.168.249.4 www.xzk.com
192.168.249.4 regist.xzk.com

做好域名指向后,修改nginx配置文件 domain.conf(没有就创建)

 server {
 listen 80;
 server_name www.xzk.com;
 location / {
 root /usr/share/nginx/cart;
 index cart.html;
 }
 }
 server {
 listen 80;
 server_name regist.xzk.com;
 location / {
 root /usr/share/nginx/search;
 index search.html;
 }
 }

在~/usr/nginx下创建cart目录和search目录,并分别在俩个目录下创建cart.html和search.html
内容随意编写

例如: cart.html

this is cart=>server_name=www.xzk.com

search.html

this is search,server_name=regis.xzk.com

将这俩个文件夹拷贝被nginx容器当中

当前在nginx目录下

执行以下指令:
docker cp cart/ c_nginx:/usr/share/nginx
docker cp search/ c_nginx:/usr/share/nginx

重启nginx容器

docker restart c_nginx

测试访问

访问www.xzk.com出现如下界面

访问regist.xzk.com出现如下界面

这样就完成了域名的的绑定

Nginx反向代理 反向代理概念

反向代理(Reverse Proxy)⽅式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部⽹络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为⼀个反向代理服务器

正向代理如下图所示:

正向代理是针对你的客户端,而反向代理是针对服务器的,如下图

配置反向代理-准备工作

在docker中部署tomcat

    搜索tomcat镜像
docker search tomcat
    拉取tomcat镜像
docker pull tomcat
    创建容器,设置端⼝映射、⽬录映射
# 在/root⽬录下创建tomcat⽬录⽤于存储tomcat数据信息
mkdir ~/tomcat
cd ~/tomcat
    创建容器
#这里我将容器的8080端口映射到宿主机的8081端口上,防止与nginx端口冲突
#当前是在创建好的tomcat1文件夹下
docker run -id --name=c_tomcat1 
-p 8081:8080 
-v $PWD:/usr/local/tomcat/webapps 
tomcat
配置反向代理

在~/nginx/config.d/proxy.conf(没有则创建)添加如下内容

upstream tomcat-kkb{
 server 192.168.249.4:8081;
 }
 server {
 	listen 80; # 监听的端⼝
 	server_name www.kkb.com; # 域名或ip
 	location / { # 访问路径配置
 	# root index;# 根⽬录
 	proxy_pass http://tomcat-kkb;
 	index index.html index.htm; # 默认⾸⻚
 	}
 }

意思就是说,当访问www.kkb.com时候,会通过proxy_pass这个配置信息调到192.168.249.4:8081下,也就是上面配置的tomcat下

重新启动Nginx

在hosts文件下添加内容

192.168.249.4 www.kkb.com

测试

访问www.kkb.com出现如图

这样就完成了反向代理

Nginx负载均衡 概念

负载均衡 建⽴在现有⽹络结构之上,它提供了⼀种廉价有效透明的⽅法扩展⽹络设备和服务器的带宽、增加吞吐量、加强⽹络数据处理能⼒、提⾼⽹络的灵活性和可⽤性。

负载均衡,英⽂名称为Load Balance,其意思就是分摊到多个操作单元上进⾏执⾏,例如Web服务器、FTP服务器、企业关键应⽤服务器和其它关键任务服务器等,从⽽共同完成⼯作任务。

配置负载均衡-准备工作
    再创建一个tomcat容器,端口为8082
#先在/root下建立tomcat2文件夹
#进入到tomcat2文件夹下,执行如下命令

docker run -id --name=c_tomcat2 
-p 8082:8080 
-v $PWD:/usr/local/tomcat/webapps 
tomcat

为了均衡是c_tomcat1还是c_tomcat2,在tomcat2目录下创建ROOT文件夹

在tomcat2文件夹的ROOT文件夹下创建index.html文件,以便区别c_tomcat1 ,内容如下

this is tomcat index.html port=8082
配置负载均衡
    修改Nginx配置文件: lb.conf(没有则创建)
upstream tomcat-huike {
 server 192.168.249.4:8081;
 server 192.168.249.4:8082;
 }
 server {
 listen 80; # 监听的端⼝
 server_name www.huike.com; # 域名或ip
 location / { # 访问路径配置
 # root index;# 根⽬录
 proxy_pass http://tomcat-huike;
 index index.html index.htm; # 默认⾸⻚
 }
 error_page 500 502 503 504 /50x.html; # 错误⻚⾯
 location = /50x.html {
 root html;
 }
 }

修改好之后重启nginx容器

docker restart c_nginx

    修改hosts文件
    添加 192.168.249.4 www.huike.com

    测试
    地址输入www.huike.com,观察页面是否轮循出现tomcat1的页面和tomcat2的页面,交替显示

如果想让某一容器出现次数是其他容器的2倍,则修改配置如下:

upstream tomcat-travel {
 server 192.168.249.4:8081 weight=2;
 server 192.168.249.4:8082;
 }

这样就完成了nginx的负载均衡配置

location = /50x.html {
root html;
}
}

修改好之后重启nginx容器

docker restart c_nginx

2. 修改hosts文件
添加 192.168.249.4  www.huike.com

3. 测试
地址输入www.huike.com,观察页面是否轮循出现tomcat1的页面和tomcat2的页面,交替显示

如果想让某一容器出现次数是其他容器的2倍,则修改配置如下:

upstream tomcat-travel {
server 192.168.249.4:8081 weight=2;
server 192.168.249.4:8082;
}

这样就完成了nginx的负载均衡配置
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/757199.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号