编辑:事实证明,下面的我的设置确实有效。以前,我将重定向到端口36000,但这是由于后端应用程序上的某些配置设置引起的。
我不确定,但我相信我可能想使用nginx设置反向代理。
我有一个应用程序在端口36000的服务器上运行。默认情况下,端口36000是不可公开访问的,我的意图是让nginx侦听公共URL,将对该URL的任何请求定向到在端口36000上运行的应用程序。在整个过程中,用户不应该知道他/她的请求正在发送到在我的服务器端口36000上运行的应用程序。
具体来说,假设我的网址是http://domain.somehost.com/
访问http://domain.somehost.com/时,nginx应该接收该请求并将其重定向到端口36000上已在服务器上运行的应用程序,该应用程序进行一些处理,然后将响应传递回去。端口36000不可公开访问,并且不应作为任何url的一部分出现。
我尝试了一个看起来像这样的设置:
server {
listen 80;
server_name domain.somehost.com
location / {
proxy_pass http://127.0.0.1:36000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
并将其包含在我的主要nginx.conf中
但是,这要求我使36000端口可公开访问,而我正试图避免这种情况。端口36000也显示为Web浏览器中转发的URL的一部分。
有什么办法可以做同样的事情,但又不能使端口36000可以访问?
谢谢。
最佳答案
编辑:下面的配置来自一个有效的nginx配置,其主机名和端口已更改。
您可能需要将侦听端口36000的服务器设置为upstream
服务器(请参见http://nginx.org/en/docs/http/ngx_http_upstream_module.html)。
server {
listen 80;
server_name domain.somehost.com;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://localhost:36000/;
proxy_redirect http://localhost:36000/ https://$server_name/;
}
}
关于nginx - nginx反向代理到在本地主机上运行的后端,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16669773/