一、前言

Nginx 反向代理是一种常见的网络架构技术,用于将客户端请求转发到后端服务器,并将后端服务器的响应返回给客户端。

打个比方:

我有nasweb服务、git服务、博客服务,想把每个服务解析到不同的二级域名上

nasweb服务》web.xx.com

git服务》git.xx.com

博客服务》bk.xx.com

二、dokcer搭建nginx教程

# 下载容器
docker pull nginx:latest
# 生成容器
docker run --name nginx -p 9001:80 -d nginx:latest
# 将容器nginx.conf文件复制到宿主机
docker cp nginx:/etc/nginx/nginx.conf /mnt/nginx/conf/nginx.conf
# 将容器conf.d文件夹下内容复制到宿主机
docker cp nginx:/etc/nginx/conf.d /mnt/nginx/conf/conf.d
# 将容器中的html文件夹复制到宿主机
docker cp nginx:/usr/share/nginx/html /mnt/nginx/
# 修改本地html文件
root@broadxt-PowerEdge-R710:/mnt/nginx/html# mv index.html index.html.old
# 删除容器在运行以下命令

docker run -d --name nginx \
    -p 80:80 \
    -p 443:443 \
    --restart=on-failure:5 \
    -v /mnt/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
    -v /mnt/nginx/conf/conf.d:/etc/nginx/conf.d/ \
    -v /mnt/nginx/sll:/etc/ssl \
    -v /mnt/nginx/log:/var/log/nginx \
    -v /mnt/nginx/html:/usr/share/nginx/html \
    nginx:latest

nginx_web.conf
server {
   listen 443 ssl;
   listen [::]:443 ssl;
   server_name web.xx.com; # 需要改成自己的域名
   ssl_certificate ssl/xx.com.cer;
   ssl_certificate_key ssl/xx.com.key;
   ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
   location / {
     proxy_pass http://localhost:5000; # 需要改成自己的服务端口
     proxy_ssl_server_name on;
     client_max_body_size 0;  # 移除上传大小限制
     sendfile off;  # 开启高效文件传输
     tcp_nopush off;  # 结合sendfile使用
   }
}

nginx_git.conf
server {
   listen 443 ssl;
   listen [::]:443 ssl;
   server_name git.xx.com; # 需要改成自己的域名
   ssl_certificate ssl/xx.com.cer;
   ssl_certificate_key ssl/xx.com.key;
   ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
   location / {
     proxy_pass http://localhost:5300; # 需要改成自己的服务端口
     proxy_ssl_server_name on;
     client_max_body_size 0;  # 移除上传大小限制
     sendfile off;  # 开启高效文件传输
     tcp_nopush off;  # 结合sendfile使用
   }
}


nginx_bk.conf
server {
   listen 443 ssl;
   listen [::]:443 ssl;
   server_name bk.xx.com; # 需要改成自己的域名
   ssl_certificate ssl/xx.com.cer;
   ssl_certificate_key ssl/xx.com.key;
   ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
   location / {
     proxy_pass http://localhost:5400; # 需要改成自己的服务端口
     proxy_ssl_server_name on;
     client_max_body_size 0;  # 移除上传大小限制
     sendfile off;  # 开启高效文件传输
     tcp_nopush off;  # 结合sendfile使用
   }
}

注:nginx配置详解

Nginx配置文件详解 - 程序员自由之路 - 博客园