我通过nginx代理运行的页面遇到了一些问题。 这个页面调用其他内部服务器,我想用nginx重写这些URL。
我已经为以下内容运行了代理传递:
foo.site.internal - > foo.site.nl(公共) 网站内部,需要一些其他服务,如: foo2.site.internal:1400 / JSON / API /呼叫/ BLA
目前foo.site.nl正试图通过一些javescript使用来接收这些调用。但这是不可能的,因为最终用户无法连接到foo2.site.internal
所以我创建了一个反向代理: foo2.site.internal:1400运行于:foo.site.nl:1400,所以我想在不改变后端站点配置的情况下完成的是:
将页面中的foo2.site.internal:1400 / json / api / call / bla重写为foo.site.nl:1400/json/api/call/bla
使用nginx可以做到这一点吗?
我当前的配置:
server {
listen 443 ssl;
ssl_certificate /etc/nginx/ssl/site.nl.cert;
ssl_certificate_key /etc/nginx/ssl/site.nl.key;
server_name foo.site.nl;
location / {
proxy_intercept_errors on;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://foo.site.internal/;
}
}
server {
listen 14000 default_server;
server_name foo.site.nl;
location / {
proxy_pass http://foo2.site.internal:14000;
proxy_set_header Host foo2.site.internal:14000;
}
}
答案 0 :(得分:0)
您可以使用此配置:
server {
listen 443 ssl;
ssl_certificate /etc/nginx/ssl/site.nl.cert;
ssl_certificate_key /etc/nginx/ssl/site.nl.key;
server_name foo.site.nl;
location / {
proxy_intercept_errors on;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://foo.site.internal/;
}
}
server {
listen 14000 default_server;
server_name foo.site.nl;
location / {
try_files $uri $uri/ /index.php?$args;
proxy_pass http://foo2.site.internal:14000;
proxy_set_header Host foo2.site.internal:14000;
}
}