当前位置:首页 > 服务端 > 一篇吃全Nginx全面配置以及详细部署

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

Nginx

Nginx应用场景:

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

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

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

安装Nginx

这里使用docker安装nginx

  1. 搜索nginx镜像
docker search docker
  1. 拉取nginx镜像
docker pull nginx
  1. 创建容器,设置端⼝映射、⽬录映射
# 在/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;
 }
}
  1. 创建容器
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。⽇志⽬录
  1. 访问nginx
    即访问虚拟机ip + 80端口

Nginx静态网站部署

静态网站的部署

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

配置虚拟主机

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

端口绑定

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

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

this is regist.html,port=82
  1. 修改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;
 }
 }
  1. 访问测试
    分别访问虚拟机ip+81和虚拟机ip+82的俩个页面,出现如下

一篇吃全Nginx全面配置以及详细部署 _ JavaClub全栈架构师技术笔记

一篇吃全Nginx全面配置以及详细部署 _ JavaClub全栈架构师技术笔记

域名绑定

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

域名级别

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

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

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

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

域名与ip绑定:

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

本地测试可以修改 hosts ⽂件(C:\Windows\System32\drivers\etc)

可以配置域名和 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出现如下界面

一篇吃全Nginx全面配置以及详细部署 _ JavaClub全栈架构师技术笔记

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

一篇吃全Nginx全面配置以及详细部署 _ JavaClub全栈架构师技术笔记

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

Nginx反向代理

反向代理概念

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

正向代理如下图所示:

一篇吃全Nginx全面配置以及详细部署 _ JavaClub全栈架构师技术笔记

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

一篇吃全Nginx全面配置以及详细部署 _ JavaClub全栈架构师技术笔记

配置反向代理-准备工作

在docker中部署tomcat

  1. 搜索tomcat镜像
docker search tomcat
  1. 拉取tomcat镜像
docker pull tomcat
  1. 创建容器,设置端⼝映射、⽬录映射
# 在/root⽬录下创建tomcat⽬录⽤于存储tomcat数据信息
mkdir ~/tomcat
cd ~/tomcat
  1. 创建容器
#这里我将容器的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全面配置以及详细部署 _ JavaClub全栈架构师技术笔记

这样就完成了反向代理

Nginx负载均衡

概念

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

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

配置负载均衡-准备工作

  1. 再创建一个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

配置负载均衡

  1. 修改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
  1. 修改hosts文件
    添加 192.168.249.4 www.huike.com

  2. 测试
    地址输入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的负载均衡配置

作者:coder_小吴
来源链接:https://blog.csdn.net/weixin_50313429/article/details/123389009

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。





本文链接:https://www.javaclub.cn/server/68073.html

标签: Nginx
分享给朋友:

“一篇吃全Nginx全面配置以及详细部署” 的相关文章