我想要连接example.com/api/buy和example.com/api/sell通过反向代理到特定站点。
所以我尝试通过本地主机/api/购买和本地主机/api/销售使用 nginx。
我按如下方式设置了配置文件。
server {
listen 80;
server_name localhost;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
}
location = /api/buy {
return 302 /api/buy/;
}
location /api/buy/ {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header HOST $host;
proxy_set_header X-NginX-Proxy true;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://example.com:80/;
proxy_redirect off;
}
location = /api/sell {
return 302 /api/sell/;
}
location /api/sell/ {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header HOST $host;
proxy_set_header X-NginX-Proxy true;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://example.com:82/;
proxy_redirect off;
}
}
但是如果我连接 /api/buy 和 /api/sell,我会收到 404 未找到错误。
您可以使用不同的端口进行设置。
我想将其设置为相同的端口,但是有什么办法吗?
答案1
当使用正则表达式指定位置时,并且也在命名位置内。
在这些情况下,应该指定不带 URI 的 proxy_pass。
http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_pass