本地主机上运行的nginx反向代理到后端

本地主机上运行的nginx反向代理到后端,nginx,reverse-proxy,Nginx,Reverse Proxy,编辑:事实证明,下面的“我的设置”确实有效。以前,我会重定向到36000端口,但这是由于我的后端应用程序上的一些配置设置导致的 我不完全确定,但我相信我可能希望使用nginx设置一个反向代理 我有一个应用程序在36000端口的服务器上运行。默认情况下,端口36000是不可公开访问的,我的目的是让nginx侦听公共url,将对该url的任何请求定向到在端口36000上运行的应用程序。在整个过程中,用户不应该知道他/她的请求正在发送到运行在我的服务器端口36000上的应用程序 更具体地说,假设我的u

编辑:事实证明,下面的“我的设置”确实有效。以前,我会重定向到36000端口,但这是由于我的后端应用程序上的一些配置设置导致的

我不完全确定,但我相信我可能希望使用nginx设置一个反向代理

我有一个应用程序在36000端口的服务器上运行。默认情况下,端口36000是不可公开访问的,我的目的是让nginx侦听公共url,将对该url的任何请求定向到在端口36000上运行的应用程序。在整个过程中,用户不应该知道他/她的请求正在发送到运行在我的服务器端口36000上的应用程序

更具体地说,假设我的url是

在访问时,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也作为转发url的一部分显示在web浏览器中

是否有任何方法可以做同样的事情,但不使端口36000可访问


谢谢。

编辑:下面的配置来自正在工作的nginx配置,主机名和端口已更改

您需要能够将侦听端口36000的服务器设置为上游服务器(请参阅)


它不起作用。但是上面的配置中有一些错误。我必须将上游块移出服务器块,并删除“127.0.0.1:36000”部分的“http://”前缀。有一个内部服务器块,我不得不删除'server{'和'}'部分。但是是的,它没有成功。。。知道为什么吗?啊,对不起,我打错了。第二个服务器块不应存在。现在编辑。另外,请尝试使用
proxy\u redirect
语句<代码>代理服务器重定向http://localhost:36000/ http://$server\u name/仍然无法工作。现在我的配置看起来像:上游后端{server127.0.0.1:36000;}server{listen 80;server_name domain.somehost.com;location/{proxy_pass;proxy_redirect http://$server_name/;proxy_set_header Host$Host;proxy_set_header X-Real-IP$remote_addr;proxy_set_header X-Forwarded-For$proxy_add_X_Forwarded_For;}@bibstha很好,我已经编辑了我的答案。它与$http\U主机一起工作,但从技术上讲,它应该使用$host来剥离端口号等。
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/;
        }
}