腾讯云多域名多证书Nginx配置

Nginx简介

Nginx简介

  • Nginx 是开源、高性能、高可靠的 Web 和反向代理服务器,而且支持热部署,同时也提供了 IMAP/POP3/SMTP 服务,可以不间断运行,提供热更新功能。占用内存少、并发能力强,最重要的是,Nginx 是免费的并可以商业化,配置使用都比较简单。

Nginx 特点

  • 高并发、高性能

  • 模块化架构使得它的扩展性非常好

  • 异步非阻塞的事件驱动模型这点和 Node.js 相似

  • 无需重启可不间断运行

  • 热部署、平滑升级

  • 完全开源,生态好

Nginx使用场景

  • 静态资源服务

  • 反向代理服务,包括缓存、负载均衡

  • API 服务,OpenResty

Nginx部署

Docker 一键部署Nginx

  • 先决条件安装好docker

  • 复制以下代码运行启动 Nginx

docker run -d \
  --name nginx \
  --restart always \
  -p 80:80 \
  -p 443:443 \
  -v /data/docker/nginx/conf.d:/etc/nginx/conf.d \
  -v /data/docker/nginx/vhost.d:/etc/nginx/vhost.d \
  -v /data/docker/usr/share/nginx/html:/usr/share/nginx/html \
  -v /data/docker/nginx/certs:/etc/nginx/certs:ro \
  nginx

Nginx配置

静态配置文件编辑

  • proxy_set_header Host $host; # 将客户端请求中的 Host 头部信息设置到后端服务器请求中的 Host 头部中,以便后端服务器能够根据请求的域名来处理请求。如果不设置这个头部信息,后端服务器可能会无法正确地处理请求。

  • proxy_set_header X-Real-IP $remote_addr; # 将客户端请求中的真实 IP 地址设置到后端服务器请求的头部信息中的 X-Real-IP 字段中,以便后端服务器能够获取客户端的真实 IP 地址。这个指令在一些情况下很有用,例如后端服务器需要根据客户端的 IP 地址来做一些限制或者记录日志等操作。

  • proxy_pass http://backend_server; # Nginx 会根据配置的 proxy_pass 指令将请求转发到指定的后端服务器。

    • 我这里填写的是服务器公网地址IP加端口,我在应用容器里配置了外网可访问的IP。配置IP后可以强制重定向到https http重定向https

 server {
       listen       80;
       server_name localhost;
       #重定向HTTPS
       #return 301 https://$host$request_uri;
        


         #服务器配置
         location / {
              #proxy_pass http://backend_server;
              #项目目录
              root  /lanys/demo/demo;
              #index.html存放位置
               index  index.html index.htm;
              proxy_set_header Host $host;
              proxy_set_header X-Real-IP $remote_addr;
}

配置SSL后配置文件编辑

  • 我在服务器里面起了2个不同的应用服务器配置了不同的端口号,我可以根据不同的端口来转发不同的域名。

  • 需要在后面注释的内容,如果你是指定index.html路径就不要注释。

         #网站主页路径。此路径仅供参考,具体请您按照实际目录操作。
         #例如,您的网站主页在 Nginx 服务器的 /etc/www 目录下,则请修改 root 后面的 html 为 /etc/www。
         #root html; 
         #index  index.html index.htm;

需要在后面增加的内容一

  • 正常web页面下请添加配置一即可。

  • 可以使用内网IP+端口的方式转发

  • 也可以使用指定index.html路径的方式。

# 我使用的是公网IP+端口的方式 
location / {
        proxy_pass http://本服务器公网IP:应用服务器端口号;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
         #网站主页路径。此路径仅供参考,具体请您按照实际目录操作。
         #例如,您的网站主页在 Nginx 服务器的 /etc/www 目录下,则请修改 root 后面的 html 为 /etc/www。
         #root html; 
         #index  index.html index.htm;
    }
 }

需要在后面增加的内容二

  • 这个配置是应用是存储服务器配置信息不需要请忽略。

  • 替换location 里面的内容即可,请注意大括号{}

此配置字段含义

  • proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;:将客户端 IP 地址添加到请求头中的 X-Forwarded-For 字段,以便后端服务器能够获取客户端的真实 IP 地址。

  • proxy_set_header X-Forwarded-Proto $scheme;:将客户端请求的协议添加到请求头中的 X-Forwarded-Proto 字段,以便后端服务器能够获取客户端请求的协议。

  • proxy_set_header Range $http_range;:将客户端请求的 Range 头部信息添加到后端服务器的请求头中的 Range 字段中,以便后端服务器能够支持客户端的断点续传请求。

  • proxy_set_header If-Range $http_if_range;:将客户端请求的 If-Range 头部信息添加到后端服务器的请求头中的 If-Range 字段中,以便后端服务器能够支持客户端的断点续传请求。

  • proxy_redirect off;:禁止 Nginx 在反向代理时修改响应头中的 Location 和 Refresh 字段。

  • proxy_pass http://localhost:8081;:将请求转发到指定的后端服务器。

  • proxy_set_header Host $host;:将客户端请求中的 Host 头部信息设置到后端服务器请求中的 Host 头部中。

  • proxy_set_header X-Real-IP $remote_addr;:将客户端请求中的真实 IP 地址设置到后端服务器请求的头部信息中的 X-Real-IP 字段中。

  • client_max_body_size 20000m;:设置客户端请求上传文件的大小上限为 20000 MB。

location / {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header Range $http_range;
        proxy_set_header If-Range $http_if_range;
        proxy_redirect off;
        proxy_pass http://localhost:端口号;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        # the max size of file to upload
        client_max_body_size 20000m;
         #网站主页路径。此路径仅供参考,具体请您按照实际目录操作。
         #例如,您的网站主页在 Nginx 服务器的 /etc/www 目录下,则请修改 root 后面的 html 为 /etc/www。
         #root html; 
         #index  index.html index.htm;
    }
 }                   

完整Nginx配置

  • 只适用于SSL证书配置(如果了解网站搭建请自行修改)。

  • 域名证书 请删除一个(请看注释#第二个服务server (包含443以下所有内容。

  • 如果你配置了SSL 证书请把以下内容中80端口中的location 服务器地址信息注释掉,使用SSL里面面的location 配置。

  • location /certs/ { deny all; } 的含义是,当请求的 URI 匹配 /certs/ 时,将返回 403 Forbidden 错误,拒绝用户访问 /certs/ 目录下的所有资源。其中,deny all 是 Nginx 中的指令,表示拒绝所有的请求。

server {
       listen 80;
       server_name localhost;
       #重定向HTTPS
       #return 301 https://$host$request_uri;
        
         #服务器配置
         location / {
              #proxy_pass http://backend_server;
              #项目目录
              #root  /lanys/demo/demo;
              #index.html存放位置
              # index  index.html index.htm;
              proxy_set_header Host $host;
              proxy_set_header X-Real-IP $remote_addr;
}
# 第一个服务
server {
     #SSL 默认访问端口号为 443
     listen 443 ssl; 
     #请填写绑定证书的域名
     server_name cloud.tencent.com; 
     #请填写证书文件的相对路径或绝对路径
     ssl_certificate cloud.tencent.com_bundle.crt; 
     #请填写私钥文件的相对路径或绝对路径
     ssl_certificate_key cloud.tencent.com.key; 
     ssl_session_timeout 5m;
     #请按照以下协议配置
     ssl_protocols TLSv1.2 TLSv1.3; 
     #请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
     ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; 
     ssl_prefer_server_ciphers on;
     location / {
        proxy_pass http://公网IP:第一个应用服务器的端口号;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
         #网站主页路径。此路径仅供参考,具体请您按照实际目录操作。
         #例如,您的网站主页在 Nginx 服务器的 /etc/www 目录下,则请修改 root 后面的 html 为 /etc/www。
         #root html; 
         #index  index.html index.htm;
     }

     location /certs/ {
        deny all;
    }
 
}
# 第二个服务
server {
     #SSL 默认访问端口号为 443
     listen 443 ssl; 
     #请填写绑定证书的域名
     server_name cloud.tencent.com; 
     #请填写证书文件的相对路径或绝对路径
     ssl_certificate cloud.tencent.com_bundle.crt; 
     #请填写私钥文件的相对路径或绝对路径
     ssl_certificate_key cloud.tencent.com.key; 
     ssl_session_timeout 5m;
     #请按照以下协议配置
     ssl_protocols TLSv1.2 TLSv1.3; 
     #请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
     ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; 
     ssl_prefer_server_ciphers on;
     location / {
        proxy_pass http://公网IP:第二个应用服务器的端口号;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
         #网站主页路径。此路径仅供参考,具体请您按照实际目录操作。
         #例如,您的网站主页在 Nginx 服务器的 /etc/www 目录下,则请修改 root 后面的 html 为 /etc/www。
         root html; 
         index  index.html index.htm;
     }

     location /certs/ {
        deny all;
    }

 }
LICENSED UNDER CC BY-NC-SA 4.0
评论
访问统计
总访问量: 👀| 访客数: 🚶‍♂️