本地主机上运行的nginx反向代理到后端
编辑:事实证明,下面的“我的设置”确实有效。以前,我会重定向到36000端口,但这是由于我的后端应用程序上的一些配置设置导致的 我不完全确定,但我相信我可能希望使用nginx设置一个反向代理 我有一个应用程序在36000端口的服务器上运行。默认情况下,端口36000是不可公开访问的,我的目的是让nginx侦听公共url,将对该url的任何请求定向到在端口36000上运行的应用程序。在整个过程中,用户不应该知道他/她的请求正在发送到运行在我的服务器端口36000上的应用程序 更具体地说,假设我的url是 在访问时,nginx应该拾取请求并将其重定向到服务器上已在端口36000上运行的应用程序,应用程序执行一些处理,并将响应传递回。端口36000不可公开访问,不应作为任何url的一部分出现 我尝试了如下设置:本地主机上运行的nginx反向代理到后端,nginx,reverse-proxy,Nginx,Reverse Proxy,编辑:事实证明,下面的“我的设置”确实有效。以前,我会重定向到36000端口,但这是由于我的后端应用程序上的一些配置设置导致的 我不完全确定,但我相信我可能希望使用nginx设置一个反向代理 我有一个应用程序在36000端口的服务器上运行。默认情况下,端口36000是不可公开访问的,我的目的是让nginx侦听公共url,将对该url的任何请求定向到在端口36000上运行的应用程序。在整个过程中,用户不应该知道他/她的请求正在发送到运行在我的服务器端口36000上的应用程序 更具体地说,假设我的u
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/;
}
}