我该如何设置我的网络服务器按照下面描述的方式工作?
Http 请求:mypublic.com ---> nginx 正常处理,因为它已经设置好了(
listen 80;
)Http 请求:myprivate.com ---> 由 apache 处理,设置为在 8080 上工作(
listen 8080
)
我想避免在浏览器中输入地址时包含端口,nginx 上的某种模型(代理?/squid?)。两个域都指向我的机器并按命名设置。
答案1
使用 nginx,您可以通过配置两个虚拟服务器并将其中一个通过 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;
}
}
请参阅此处的文档:
答案2
您不能直接使用 DNS 执行此操作,因为 DNS 不处理端口。
您可以在端口 80 上使用某种形式的代理,将请求传递到端口 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>
答案3
您可以使用 apache2mod_rewrite.您可以定义适当的条件和规则来重写请求的URL。
答案4
对于 nginx,为 myprivate.com 创建一个虚拟主机,并将其传递给配置为在端口 8080 上监听 myprivate.com 的 apache
服务器 { 监听 80; 服务器名称 myprivate.com;
# proxy it to Apache listening on 127.0.0.1:8080
location / {
proxy_pass http://127.0.0.1:8080;
}
}
那就可以了。
然后在 apache 上创建一个虚拟主机来监听 myprivate.com。