Nginx代理配置规则踩坑记录

原创  郑建华   2021-08-10   116人阅读  1 条评论


在踩坑之前,先来看一下location的语法规则

image.png

image.png

踩坑一:

当同一个server中,既存在动态请求代理,又存在静态资源请求代理,且静态资源请求代理为/ 全路径转发时,如何优先匹配动态请求

server {
    listen 8082;
	server_name 192.168.15.151;

	location ^~/file {
       proxy_pass http://192.168.2.151:9001/file;
    } 	

	location /{
	   root C:/nginx-1.18.0/nginx-1.18.0/hnevol_medical_wisdom_screen;
	   try_files $uri $uri/ /index.html;
	}
	
	location /wisdomWs{
	   proxy_http_version 1.1;
	   proxy_set_header Upgrade $http_upgrade;
	   proxy_set_header Connection 'upgrade';		
	   proxy_pass http://192.168.2.151:12349/wisdomWs;
	}
}

如果不在 /file 前 加^~ 请求还是转发到了/中,走了静态资源的代理


踩坑二:

当同一个server中,既存在动态请求代理,又存在静态资源请求代理,且动态请求代理为/ 全路径转发时, 如何优先匹配静态请求

server {
    	listen 5001;
        server_name  127.0.0.1;
	
	proxy_set_header Host $http_host;
	proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
	proxy_set_header X-Real-IP $remote_addr;
	proxy_buffering on;
	proxy_buffer_size 712k;
	proxy_buffers 2 712k;
	proxy_busy_buffers_size 712k;
	proxy_temp_path tempinx_proxy_temp 1 2;
	proxy_max_temp_file_size 20M;
	proxy_temp_file_write_size 712k;


	#location /wisdomApp/{
	#  proxy_pass http://127.0.0.1:8083/wisdomApp/;
	#}
	
	location /wisdomApp/{
	    try_files $uri $uri/ /wisdomApp/index.html;
	}

	location /wisdomWs{
		proxy_http_version 1.1;
		proxy_set_header Upgrade $http_upgrade;
		proxy_set_header Connection 'upgrade';		
		proxy_pass http://192.168.2.151:12349/wisdomWs;
	}
		
	location /file {
		proxy_pass http://192.168.2.151:9001/file;
	} 	

	location / {
   	   add_header 'Access-Control-Allow-Origin' '*';
	   add_header 'Access-Control-Allow-Credentials' 'true';
	   proxy_pass http://192.168.200.15:9000;
	}
    }

如上配置,在同一server中,既存在/的动态代理请求,又存在以/wisdomApp/为前缀的静态资源请求

按照以上配置,不做更改时,访问/wisdomApp/ 并没有访问到静态文件,而是提示未找到资源,并且按照之前的 在优先的匹配规则 /wisdomApp/ 前加上 ^~  还是没有生效


解决方案

server {
    	listen 8083;
	server_name 192.168.15.151;	
		
	location /wisdomApp/{
	   try_files $uri $uri/ /wisdomApp/index.html;
	}
 }

额外添加一个内网server,内部代理为/全路径转发 静态资源,而原来的5001server中 将静态代理修改为动态请求,转发到8083的server中


本文地址:https://www.zjh336.cn/?id=2053
版权声明:本文为原创文章,版权归 郑建华 所有,欢迎分享本文,转载请保留出处!

发表评论


表情

 评论列表

  1. 头条新闻
    头条新闻 【实习生】  @回复

    文章不错关注一下