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;
				}			
		}
相关推荐
syagain_zsx2 小时前
Linux指令初识(实用篇)
linux·运维·服务器
OYangxf2 小时前
Git Commit Message
运维·git
Alter12302 小时前
从“力大砖飞”到“拟态共生”,新华三定义AI基础设施的系统级进化
大数据·运维·人工智能
王木风2 小时前
终端里的编程副驾:DeepSeek-TUI-项目深度拆解,实测与原理分析
linux·运维·人工智能·rust·node.js
槑槑紫2 小时前
windows系统装轻量版linux开发
linux·运维·服务器
齐潇宇2 小时前
k8s-Helm管理器
linux·运维·云原生·容器·kubernetes
小王C语言4 小时前
Windows和Linux之间文件互传
linux·运维·服务器
magic_now5 小时前
Linux 内核启动流程详解(基于 5.15.119 源码)
linux·运维·服务器
2401_840192275 小时前
k8s的crd、operator、cr分别是什么?
运维·分布式·kubernetes·prometheus
草木深雨纷纷5 小时前
mt管理器手机版下载2026最新版更新下载分享
linux·运维·网络·智能手机