我在防火墙后面有一组服务器。它只支持端口转发。到目前为止,我所有的子域名(www。,server。,beta。,cloud。)都在一台服务器上(OS X Server)。
我也有一个开发者。位于单独的Freebsd服务器上的子域。形成我的内部网络我可以使用我的DNS将流量发送到开发人员的正确服务器。子域。但是当我从外部访问时,我无法通过端口80访问开发服务器,因为该端口被转发到主服务器。
我不想使用非标准端口,而是希望将代理服务器从主服务器反向代理服务器,但看起来这是针对URL不适用于子域名的。有没有办法可以通过我的主服务器将dev.example.com的所有请求路由到内部开发服务器。
谢谢..
答案 0 :(得分:1)
是的,这是所有常见rproxies的标准用例,您可以在各自的文档中找到几乎可以使用的示例。使用nginx,基本设置将如下所示(将此文件放在enabled-sites子目录中):
server {
# prod marked as default so lost traffic ends up on production
listen 192.168.0.1:80 default;
server_name production.your.domain;
access_log /var/log/nginx/production-access.log;
location / {
proxy_pass http://your.production.server:80;
}
}
server {
listen 192.168.0.1:80;
server_name dev.your.domain;
access_log /var/log/nginx/development-access.log;
location / {
proxy_pass http://your.development.server:80;
}
}
使用Pound,你可以使用像
这样的东西Service
HeadRequire "Host: .*production.your.domain.*"
BackEnd
Address your.production.server
Port 80
End
End
Service
HeadRequire "Host: .*dev.your.domain.*"
BackEnd
Address your.development.server
Port 80
End
End
# and a safety net for lost traffic
Service
URL "/"
Redirect "http://production.you.domain"
end;
Apache的mod_proxy也是可能的,但由于缺乏对该组合的实践经验,我不得不借用Atlassian documentation webpage中的一个例子:
# Put this after the other LoadModule directives
LoadModule proxy_module /usr/lib/apache2/modules/mod_proxy.so
LoadModule proxy_http_module /usr/lib/apache2/modules/mod_proxy_http.so
# Put this with your other VirtualHosts, or at the bottom of the file
NameVirtualHost *
<VirtualHost *>
ServerName confluence.example.com
ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass / http://confluence-app-server.internal.example.com:8090/
ProxyPassReverse / http://confluence-app-server.internal.example.com:8090/
<Location />
Order allow,deny
Allow from all
</Location>
</VirtualHost>
<VirtualHost *>
ServerName jira.example.com
ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass / http://jira-app-server.internal.example.com:8080/
ProxyPassReverse / http://jira-app-server.internal.example.com:8080/
<Location />
Order allow,deny
Allow from all
</Location>
</VirtualHost>