nginx常用配置反向代理配置

1.这是反向代理 WebSocket

复制代码
 server {
    listen       443 ssl;
    server_name   xx.com;
    ssl_certificate      xx.com.pem;
    ssl_certificate_key  xx.com.key;
    ssl_session_timeout  5m;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    ssl_protocols TLSv1.2;
    ssl_prefer_server_ciphers on;
      

    location / {
        proxy_pass https://127.0.0.1:8081;   
        proxy_http_version 1.1;
        # WebSocket 代理必须加这两个超时!!!
        proxy_connect_timeout 30s;
        proxy_read_timeout 86400s;
        proxy_send_timeout 86400s; 
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        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_set_header X-Forwarded-Proto $scheme;
    }
}
复制代码
 location /socket.io {    
            proxy_pass http://127.0.0.1/yuyinapi/socket.io;  #作用:核心指令。将匹配到的请求转发(代理)到后端服务器。这里是将请求转发到本机(127.0.0.1)的 /yuyinapi/socket.io地址。
            proxy_http_version 1.1;# 作用:指定Nginx与后端服务器通信时使用 HTTP/1.1​ 协议。这是支持 Upgrade头部(用于WebSocket升级)所必需的。
            proxy_set_header Upgrade $http_upgrade;#作用:将客户端请求头中的 Upgrade头(其值通常是 websocket)原样转发给后端服务器。这是WebSocket握手的关键步骤。
            proxy_set_header Connection "upgrade";# 作用:将 Connection头设置为 upgrade,并转发给后端。这告知服务器客户端希望将连接协议升级为WebSocket。
            proxy_set_header Host $host;# 作用:将客户端请求的原始 Host主机头信息转发给后端服务器。这对于服务器正确识别虚拟主机或生成正确的URL非常重要。         
            proxy_set_header X-Real-IP $remote_addr;#作用:设置一个自定义头 X-Real-IP,其值为客户端的真实IP地址($remote_addr)。因为请求经过代理,后端服务器默认看到的将是Nginx服务器的IP,此头用于传递用户真实IP。
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;#作用:设置 X-Forwarded-For头,用于记录请求经过的代理服务器链。$proxy_add_x_forwarded_for变量会在已有的值后面追加当前Nginx服务器的IP,这样后端服务可以追踪完整的请求路径。
            proxy_set_header X-Forwarded-Proto $scheme;#作用:设置 X-Forwarded-Proto头,其值为客户端访问Nginx时使用的协议($scheme,如 http或 https)。后端服务器据此可以判断用户是否使用了HTTPS。
            proxy_read_timeout 3600s;#作用:超时设置。nginx等待后端服务器响应的超时时间,设为3600秒(1小时)
            proxy_send_timeout 3600s;#Nginx向后端服务器发送请求的超时时间,同样设为3600秒。防止长时间空闲的连接被意外关闭。
            proxy_buffering off;#关闭代理缓冲。对于WebSocket这种双向实时流,数据应立即转发,不应缓冲。
            proxy_cache off;#关闭代理缓存。WebSocket通信内容是实时、动态的,不应被缓存。
        }

还有两个参数

proxy_buffer_size 4k; # 减小缓冲区大小,加快首包返回

proxy_read_timeout 300s; # 可适当调大超时时间(根据业务)

这是配置的python接口

location /aiapi {

rewrite ^/aiapi(.*) 1 break;

proxy_set_header Host host:server_port;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_set_header X-Real-IP $remote_addr;

proxy_http_version 1.1;

proxy_set_header Upgrade $http_upgrade;

proxy_set_header Connection 'upgrade';

proxy_buffering off;#关闭代理缓冲。对于WebSocket这种双向实时流,数据应立即转发,不应缓冲。

proxy_cache off;#关闭代理缓存。WebSocket通信内容是实时、动态的,不应被缓存。

proxy_buffer_size 4k; # 减小缓冲区大小,加快首包返回

proxy_read_timeout 300s; # 可适当调大超时时间(根据业务)

proxy_send_timeout 300s;

proxy_pass http://127.0.0.1:8002;

}

proxy_set_header Host host;和 proxy_set_header Host host:$server_port; 的区别

如果nginx的端口是80和443就用 proxy_set_header Host $host;

假设客户端访问的URL是:https://example.com:8443/api/data 就用proxy_set_header Host host:server_port;

2.反向代理 接口和图片 接口

复制代码
	 server {
		   listen       8001 ; 
			server_name  xx.com;  
			
			access_log  logs/xx.log  main;				
			error_log  logs/xx.log  info;			 
		    allow 192.168.1.35;#允许放下的ip	 
 			deny all;		
		   location = /favicon.ico {
				log_not_found off;
				access_log off;
				return 204;
			}
            #配置图片访问地址
			location /bjhl/files/fastdfs/group1/M00 {
			  add_header Access-Control-Allow-Origin *;
			  add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
			  add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';
				alias   /usr/local/fastdfs/storage/data;
				
			}
        	 #配置fdfs路径
			location /group1/M00/ {
			   rewrite ^/api(.*)$ $1 break;
			   add_header Access-Control-Allow-Origin *;
				add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
				add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';
				root   /usr/local/fastdfs/storage/data;
				ngx_fastdfs_module;
			}
	 
		    location /api {	
				rewrite ^/api(.*)$ $1 break;
				proxy_set_header Host $host:$server_port;
				proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
				proxy_set_header X-Real-IP $remote_addr;
				proxy_set_header X-Forwarded-Proto https;
				proxy_pass http://127.0.0.1:9008/;
             }				
			location / {
				add_header 'Access-Control-Allow-Origin' '*'; #允许来自所有的访问地址
				add_header 'Access-Control-Allow-Credentials' 'true';
				add_header 'Access-Control-Allow-Methods' 'GET, PUT, POST, DELETE, OPTIONS'; #支持请求方式

					root   /www/page;
					index  index.html index.htm;
				}			
		}
相关推荐
要做一个小太阳2 小时前
Consul SD 常见标签
运维·数据库·consul
张3232 小时前
角色与内容集合:自动化配置的标准化复用机制
运维·自动化·ansible
Black蜡笔小新2 小时前
企业私有化AI部署方案DLTM企业级AI模型工作站:零代码私有化,企业AI训练服务器新选择
运维·服务器·人工智能
李日灐2 小时前
<4>Linux 权限:从 Shell 核心原理 到 权限体系的底层逻辑 详解
linux·运维·服务器·开发语言·后端·面试·权限
寒秋花开曾相惜2 小时前
(学习笔记)4.1 Y86-64指令集体系结构(4.1.6 一些Y86-64指令 )
linux·运维·服务器·开发语言·笔记·学习·安全
运维小斌2 小时前
麒麟v10arm使用dnsmasq部署本地DNS服务器
linux·运维·服务器·网络
AI服务老曹2 小时前
深度解析:基于 Docker 与 GB28181 的异构计算 AI 视频管理架构,如何实现 X86/ARM 与 GPU/NPU 的全场景兼容?
运维·docker·容器
做个文艺程序员2 小时前
用 Codex 写运维脚本(二)—— Prompt 工程:如何精准描述你的脚本需求
运维·prompt
jy41932172 小时前
跨国链路丢包总查不出来?一篇讲透 Traceroute / MTR 的实战指南(含 7 个真实场景)
运维