Skip to content

nignx记录

安装

预生产

TIP

权限: /etc/nginx/nginx.conf 头部的user

校验: nginx -t

sites-*: cp default default.bak

  • 前端

  • /etc/nginx/client.conf

nginx
server {
    listen 443 ssl;

    # 填写证书绑定的域名。多域名配置示例:server_name example.com www.example.com doc.example.com;
    server_name [*前端域名*];

    # 填写证书文件绝对路径
    ssl_certificate /[*证书路径*]/[*前端域名*].pem;
    #填写证书私钥文件绝对路径
    ssl_certificate_key /[*证书路径*]/[*前端域名*].key;

    ssl_session_cache shared:SSL:1m;
    ssl_session_timeout 5m;

    # 自定义设置使用的TLS协议的类型以及加密套件(以下为配置示例,请您自行评估是否需要配置)
    # TLS协议版本越高,HTTPS通信的安全性越高,但是相较于低版本TLS协议,高版本TLS协议对浏览器的兼容性较差。
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;

    # 表示优先使用服务端加密套件。默认开启
    ssl_prefer_server_ciphers on;

    location / {
        root /root/vue;
        index index.html index.htm;
        try_files $uri $uri/ /index.html;
    }
    location /api/ {
        proxy_pass https://[*后端域名*];
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_redirect default;
        proxy_set_header X-Nginx-Proxy true;
        proxy_http_version 1.1;
        add_header Access-Control-Allow-Credentials "true" always;
    }
    location /socket/ {
        proxy_pass http://[*公网IP*]:[*socket假端口*]/[*socket path*]/;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}

server {
    listen 80;
    # 填写证书绑定的域名
    server_name [*前端域名*];
    # 将所有HTTP请求通过rewrite指令重定向到HTTPS。
    rewrite ^(.*)$ https://$host$1;
    location / {
        index index.html index.htm;
    }
}

server {
    listen [*前端访问端口*];
    server_name _;
    access_log /var/log/nginx/client.access.log;
    error_log /var/log/nginx/client.error.log;
    gzip on;
    gzip_vary on;
    gzip_proxied any;
    gzip_comp_level 6;
    gzip_min_length 10240;
    gzip_types text/plain text/css text/javascript application/javascript application/json application/xml image/svg+xml;
    location / {
        root /root/vue;
        index index.html index.htm;
        try_files $uri $uri/ /index.html;
    }
    location /api/ {
        proxy_pass http://[*公网IP*]:[*后端假端口*];
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_redirect default;
        proxy_set_header X-Nginx-Proxy true;
        proxy_http_version 1.1;
        add_header Access-Control-Allow-Credentials "true" always;
    }
    location /socket/ {
        proxy_pass http://[*公网IP*]:[*socket假端口*]/[*socket path*]/;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}
  • socket

  • /etc/nginx/socket.conf

nginx
upstream socketio {
    ip_hash;
    server [*socket真实url*] max_fails=3 fail_timeout=30s;
}
server {
    listen [*socket假端口*];
    server_name walnut-socket;
    access_log /var/log/nginx/socketio.access.log;
    error_log /var/log/nginx/socketio.error.log;
    gzip on;
    gzip_types application/json text/plain text/css application/javascript;
    gzip_min_length 1024;
    location / {
        proxy_pass http://socketio;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_read_timeout 86400s; # 长连接超时
        proxy_send_timeout 86400s;
        proxy_connect_timeout 15s;
        proxy_cache_bypass $http_upgrade;
    }
}
  • 后端

  • /etc/nginx/server.conf

nginx
upstream walnut-backend-nestjs {
    ip_hash;
    server [*内网IP*]:[*后端端口*];
}
server {
    listen 443 ssl;
    server_name [*后端域名*];

    ssl_certificate /root/cert/nestjs/[*后端域名*].pem;
    ssl_certificate_key /root/cert/nestjs/[*后端域名*].key;

    ssl_session_cache shared:SSL:1m;
    ssl_session_timeout 5m;

    # 自定义设置使用的TLS协议的类型以及加密套件(以下为配置示例,请您自行评估是否需要配置)
    # TLS协议版本越高,HTTPS通信的安全性越高,但是相较于低版本TLS协议,高版本TLS协议对浏览器的兼容性较差。
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;

    # 表示优先使用服务端加密套件。默认开启
    ssl_prefer_server_ciphers on;

    location / {
        proxy_pass http://walnut-backend-nestjs;
        proxy_redirect off;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection keep-alive;
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Real-IP $remote_addr;
    }
}
server {
    listen [*后端假端口*];
    server_name walnut-admin-nest;
    access_log /var/log/nginx/server.access.log;
    error_log /var/log/nginx/server.error.log;
    location / {
        proxy_pass http://walnut-backend-nestjs;
        proxy_redirect off;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection keep-alive;
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

基于 MIT 许可发布