nginx中代理传递存在问题,因为我是proxy_pass我的网站访问* .azurewebsites.net
假设我有一个sampledomain.com并有URL:
如果我打开sampledomain.com/folder1,浏览器将重定向到* .azurewebsites.net / folder1 /并加载页面
但是,如果我打开sampledomain.com/folder1/,浏览器将加载页面而不进行重定向。
不同之处在于URL末尾的斜杠。
而且,当我打开/ folder2和/ folder2 /
时,也会发生同样的事情这是我的缩写 nginx.conf:
http {
upstream backend {
server 127.0.0.1:8001;
server 127.0.0.1:8002;
}
upstream web01 {
server Url01.azurewebsites.net;
}
upstream web02 {
server Url02.azurewebsites.net;
}
server {
listen 80;
listen [::]:80 default_server;
server_name localhost;
location / {
proxy_pass http://backend;
proxy_set_header X-Real-IP $remote_addr;
}
}
server {
listen 8001;
listen [::]:80 default_server;
server_name web01;
location / {
proxy_set_header Host Url01.azurewebsites.net;
proxy_pass http://web01/;
}
}
server {
listen 8002;
listen [::]:80 default_server;
server_name web02;
location / {
proxy_set_header Host Url02.azurewebsites.net;
proxy_pass http://web02/;
}
}
}
我试图创建一种解决方法,如果我为/ folder1和/ folder2添加特定位置,则可以实现我所需要的。
这是我在nginx.conf中所做的更改:
server {
listen 8001;
listen [::]:80 default_server;
server_name web01;
location / {
proxy_set_header Host Url01.azurewebsites.net;
proxy_pass http://web01/;
}
location /folder1 {
proxy_set_header Host Url01.azurewebsites.net;
proxy_pass http://web01/folder1/;
}
location /folder2 {
proxy_set_header Host Url01.azurewebsites.net;
proxy_pass http://web01/folder2/;
}
}
server {
listen 8002;
listen [::]:80 default_server;
server_name web02;
location / {
proxy_set_header Host Url02.azurewebsites.net;
proxy_pass http://web02/;
}
location /folder1 {
proxy_set_header Host Url01.azurewebsites.net;
proxy_pass http://web02/folder1/;
}
location /folder2 {
proxy_set_header Host Url02.azurewebsites.net;
proxy_pass http://web02/folder2/;
}
}
有没有一种方法可以代替手动在nginx.conf中添加位置,而是可以使用代码,正则表达式或语法来对所有文件夹/ ?*
我读到下面的代码块应该执行此操作,但它只是重定向,因为最后缺少斜杠。
location / {
proxy_set_header Host url.azurewebsites.net;
proxy_pass http://web01/;
}