繁体   English   中英

nginx反向代理到在localhost上运行的后端

[英]nginx reverse proxy to backend running on localhost

编辑 :事实证明,我的设置实际上是有效的。 以前,我正在重定向到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/;
        }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM