服务代理配置/api与/api/ 的区别

访问路径都为http://127.0.0.1:82/api/info
location /api/ {
     proxy_pass http://127.0.0.1:82;
}
# 代理后的路径为http://127.0.0.1:82/api/info

location /api/ {
     proxy_pass http://127.0.0.1:82/;
}
# 代理后的路径为http://127.0.0.1:82/info

proxy_pass http://127.0.0.1:82 没有后缀/ 会拼接代理前缀
proxy_pass http://127.0.0.1:82/ 有后缀/ 会舍弃代理前缀


独立的两个应用,同一个端口

  • nginx的安装路径为: /opt/nginx
  • 项目都在html下
  • 项目A名称为: project1
  • 项目B名称为: project2
  • 监听端口都为82,在同一个server下
页面代理配置
location /api {
    root html/project1;
    index  index.html index.htm;
    try_files $uri $uri/ /index.html;
}
# 可以访问路径为: http://127.0.0.1:82/api

location /apa {
    alias html/project2;
    index  index.html index.htm;
    try_files $uri $uri/ /index.html;
}
# 可以访问路径为: http://127.0.0.1:82/apa

一个server模块下,不能有两个location 中 都为root 配置文件夹
但是可以有多个alias,alias 与 root功能相同,都是规定文件夹指向
这里用了一个root 一个 alias

独立的两个应用,不同端口

  • nginx的安装路径为: /opt/nginx
  • 项目都在html下
  • 项目A名称为: project1
  • 项目B名称为: project2
  • 项目A监听端口都为82
  • 项目A监听端口都为83
  • 用两个server模块配置
页面代理配置
     server {
        listen       82;
        server_name  localhost;
        location / {
            root   html/project1;
            index  index.html index.htm;
            try_files $uri $uri/ /index.html;
        }
     }
     server {
        listen       83;
        server_name  localhost;
        location / {
            root   html/project2;
            index  index.html index.htm;
            try_files $uri $uri/ /index.html;
        }
    }

由于是不同的server ,所以用root 或者 alias 没有任何区别

子文件夹的两个应用,同一个端口

  • nginx的安装路径为: /opt/nginx
  • 项目A名称为: project1
  • 项目B名称为: project2
  • 监听端口为82
  • 项目A路径为html
  • 项目B路径为html/test1
页面代理配置1
     server {
        listen       82;
        server_name  localhost;
        
        location / {
            root   html;
            index  index.html index.htm;
            try_files $uri $uri/ /index.html;
        }
        
        location /api {
            root   html/test1;
            index  index.html index.htm;
            try_files $uri $uri/ /index.html;
        }
     }
页面代理配置2
     server {
        listen       82;
        server_name  localhost;
        
        location / {
            root   html;
            index  index.html index.htm;
            try_files $uri $uri/ /index.html;
        }
        
        location /api/ {
       		proxy_pass http://127.0.0.1:89/;
        }
     }
  
   
	 server {
	        listen       89;
	        server_name  localhost;
	
	        location / {
	            root   html/test1;
	            index  index.html index.htm;
	            try_files $uri $uri/ /index.html;
	        }
       }

常用的nginx 超全配置

location /api/ {
		    proxy_pass http://127.0.0.1:8080/user/;
		    
		    # ===== 核心流式配置 =====
		    # 1. 完全关闭所有缓冲(最关键)
		    proxy_buffering off;
		    proxy_request_buffering off;
		    proxy_cache off;
		    
		    # 2. 禁用nginx内部缓冲机制
		    proxy_set_header X-Accel-Buffering no;
		    
		    # 3. HTTP/1.1 + 长连接支持
		    proxy_http_version 1.1;
		    proxy_set_header Connection "";
		    
		    # ===== 编码和传输设置 =====
		    # 4. 禁用压缩(压缩会导致缓冲)
		    gzip off;
		    proxy_set_header Accept-Encoding "";
		    
		    # 5. 支持分块传输
		    chunked_transfer_encoding on;
		    
		    # ===== 超时配置 =====
		    # 6. 流式长连接超时(根据实际需求调整)
		    proxy_connect_timeout 60s;
		    proxy_read_timeout 10m;      # 10分钟,可根据实际情况调整
		    proxy_send_timeout 10m;
		    send_timeout 10m;
		    
		    # ===== TCP优化 =====
		    # 7. TCP即时传输优化
		    tcp_nodelay on;              # 禁用Nagle算法,立即发送小包
		    tcp_nopush off;              # 禁用TCP_CORK,避免等待数据积累
		    
		    # ===== 标准代理头 =====
		    # 8. 转发客户端信息
		    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;
		    
		    # ===== 错误处理 =====
		    # 9. 流式响应错误处理
		    proxy_ignore_client_abort off;   # 客户端断开时终止后端请求
		    proxy_intercept_errors off;
		    
		    # ===== 客户端配置 =====
		    # 10. 客户端请求体配置
		    client_max_body_size 10m;        # 根据实际需求调整
		    client_body_buffer_size 128k;

		    proxy_buffer_size 1k;
		    proxy_busy_buffers_size 1k;
		}

更多推荐