如何在nginx上进行代理?

我将如何设置我的networking服务器以下面描述的方式工作?

  • Http请求:mypublic.com —>由nginx正常处理,因为它已经build立( listen 80;

  • http请求:myprivate.com —>通过apache处理设置工作在8080( listen 8080

我想避免在浏览器中input地址时包含端口,nginx中的某种模型(代理?/ squid?)。 这两个域都指向我的机器,并通过命名来设置。

使用nginx,您可以通过configuration两个虚拟服务器,并将其中一个虚拟服务器proxy_pass到在端口8080上运行的Apache:

 server { listen 80; server_name mypublic.com; ... } server { listen 80; server_name myprivate.com; location / { proxy_pass http://myprivate.com:8080; } } 

在这里看到的文档:

您不能直接使用DNS,因为DNS不处理端口。

您可以在端口80上使用某种forms的代理将请求传递到端口8080.apache的示例可能是

 <VirtualHost *:80> Servername contoso.com . . . </VirtualHost> <VirtualHost *:80> Servername apache.contoso.com ProxyRequests Off <Proxy *> Order deny,allow allow from all </Proxy> ProxyPreserveHost On ProxyPass / http://contoso.com:8080/ ProxyPassReverse / http://contoso.com:8080/ </VirtualHost> 

你可以使用apache2 mod_rewrite 。 您可以定义相应的条件和规则来重写所请求的URL。

对于nginx,请为myprivate.com创build一个虚拟主机,并将其传递给configuration为在端口8080上侦听myprivate.com的apache

服务器{听80; server_name myprivate.com;

 # proxy it to Apache listening on 127.0.0.1:8080 location / { proxy_pass http://127.0.0.1:8080; } 

}

这应该做的。

然后在apache上创build一个虚拟主机来监听myprivate.com。