我们正在尝试使用nginx设置反向代理,以便从DMZ网络服务器将流量重定向到内部网络。
流量进入443,遇到apache页面用户登录ldap服务器,然后我们将流量从apache重定向到nginx(正在监听8089)。然后Nginx将该流量代理回内部网络。
apache重定向有效,至少有一些nginx代理正在运行。加载内部服务器上的页面,但页面上的所有资源都是双重附加URL。例如:
https://webserver.us.com == redirects ==> http://webserver.us.com:8089 == Nginx Proxy ==> http://internal.server.com:8080 / page
http://internal.server.com/page加载,但页面上的所有资源都尝试加载为:
http://internal.server.com/page/page/resource。
直接点击内部页面时,它们当然是http://internal.server.com:8080/page/resource
我确信我们在设置proxy_pass,proxy_redirect和root / location时出错,但我无法弄明白......
我们的Nginx.conf如下:(仅供参考,这是一个solaris服务器)
worker_processes 1;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 8089;
server_name <internal.server.com>;
access_log /var/opt/csw/nginx/logs/access.log;
error_log /var/opt/csw/nginx/logs/error.log;
root http://<internal.server.com>:8080;
index index.html index.htm;
location / {
proxy_pass http://<internal.server.com>:8080/<page>/;
proxy_redirect http://<internal.server.com>:8080/<page> http://<internal.server.com>:8080/<page>;
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
proxy_buffering off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
}
每当我们在&#34;位置&#34; &#34; /&#34;以外的参数;它返回一个nginx 404,错误日志显示: &#34;在/ var /选择/ CSW / nginx的// RES_NOT_FOUND&#34;
答案 0 :(得分:0)
客户端请求webserver.us.com/
通过反向代理转换为internal.server.com:8080/page/
。
该文档指定/page/resource
之类的资源URI,因此客户端将这些请求webserver.us.com/page/resource
通过反向代理转换为internal.server.com:8080/page/page/resource
。
最简单的解决方案是使反向代理透明。您可以添加完全匹配的位置,以便将/
映射到您应用的入口点:
location = / {
rewrite ^ /page/ last;
}