nginx 配置不同local路径指向不同服务器,通过 proxy_pass 实现
给一个简洁的配置
- worker_processes 1;
- events {
- worker_connections 1024;
- }
-
- http {
- server {
- listen 80;
-
- location /oa/ {
- proxy_pass http://10.7.32.45/;
- }
-
- location /b/ {
- proxy_pass http://127.0.0.1:802/;
- }
- }
- }
但网页基本都显示不出来,都是404错误,F12看第一个请求没有问题,但里面还有其他资源时,就404了。再测试,是地址栏如果是带绝对路径的就不行。
例如一个网页里面有:
- <html><body>
- hello!
- <img src="/img/1.png" />
- <img src="img/1.png" />
- body>html>
就会发现第一个图像显示不出来,第二个图像显示正常。
查看请求如下:
这时可以使用 rewrite 功能。大概的语法是:
rewrite
regex :表示正则匹配规则。
replacement :表示跳转后的内容。
现在在配置文件增加一项:
location / {
rewrite ^/(.*)$ /b/$1;
}
即可正常显示图像。这句话啥意义?从头开始(^),/后面带任何符号(.)任何次数(*),直到结束($)的内容,都转向/b/原申请路径。
所以申请 /img/1.png 就被转为 /b/img/1.png,这样就正常了。
有一种说法,开发时,不允许使用绝对路径,这个要理解原因。