这是我的设置:
有域名:domain.com。
在我的本地网络中,我获得了一个活动目录框提供的DNS,
在端口80上运行的IIS Web服务器,主机名为iis.domain.com, 这有网站iis1.domain.com,iis2.domain.com
在端口80上运行的Apache Web服务器,主机名为apache.domain.com, 使用网站apache1.domain.com和apache2.domain.com。
在我的本地网络中,我可以很好地访问所有这些网站。 我还有iis1,iis2,apache1和apache2的外部dns条目。
我只有一个公共IP地址,我想设置另一个将端口转发到互联网的端口(端口转发端口80和443)。 我想知道在该盒子上安装什么以及如何配置它。
我已经查看了nginx,haproxy和IIS ARR,但我想知道哪些是最容易设置的,并且开销最小。
在我看来,我想指定类似......如果它是对网站iis1.domain.com的请求然后把那个带到IIS网络服务器,如果它是用于apache1.domain .com然后转到Apache Web服务器。 我想使用Linux解决方案,但我不确定哪个以及如何设置它。
提前谢谢。
P.S。 我看到了一个可能的解决方案here。
这样的事情会起作用吗?
.emacs
答案 0 :(得分:0)
我会选择haproxy(在我看来最简单)
只需要非常小心你的外部DNS和内部DNS。
你在问题中的例子转发到dns ....它指向代理(外部)....指向dns ......我认为你得到了我的意思。
HAProxy会指向您的后端IP地址,因此内部和外部DNS都会指向您的代理并被路由到其预期的后端
HAProxy配置看起来像这样:
global
# default globals
defaults
# default globals
frontend http-in
bind YOUR.IP.GOES.HERE:80
bind YOUR.IP.GOES.HERE:443 ssl crt PATH/TO/CERT-FILE.PEM no-sslv3
mode http
option httplog
option httpclose
option forwardfor
acl iis1 hdr(Host) -i iis1.domain.com
acl iis2 hdr(Host) -i iis2.domain.com
acl apache1 hdr(Host) -i apache1.domain.com
acl apache2 hdr(Host) -i apache2.domain.com
use_backend iis if iis1
use_backend iis if iis2
use_backend apache if apache1
use_backend apache if apache2
backend iis
server IIS xxx.xxx.xxx.xxx:80 check
backend apache
server APACHE xxx.xxx.xxx.yyy:80 check
答案 1 :(得分:0)
我设法通过安装带有nginx的linux盒子来实现这一点。此框中的端口80将被转发到互联网。
在/ etc / nginx中我添加了一行来查找其他配置文件 - > include /etc/nginx/sites-enabled/*.conf; 。
所以在/ etc / nginx / sites-enabled /我创建了一个配置文件,其中包含以下信息:
server {
listen 80;
server_name apache1.domain.com;
location /{
proxy_pass http://apache1.domain.com;
}
}
server {
listen 80;
server_name apache2.domain.com;
location /{
proxy_pass http://apache2.domain.com;
}
}
server {
listen 80;
server_name iis1.domain.com;
location /{
proxy_pass http://iis1.domain.com;
}
}
server {
listen 80;
server_name iis2.domain.com;
location /{
proxy_pass http://iis2.domain.com;
}
}