Nginx和apache共用80端口
2013-11-29 14:29:06   来源:   浏览: 次

导读:方法一: 使用redirect的方式,nginx运行在80端口,apache运行在8080端口, 让后在nginx这边配置到apache8080端口的redirect, server { l

方法一:

使用redirect的方式,nginx运行在80端口,apache运行在8080端口,

让后在nginx这边配置到apache8080端口的redirect,

server {
listen       192.168.1.101:80;
server_name  localhost;
rewrite ^(.*) http://192.168.1.101:8080 permanent;
。。。。

这样在访问http://192.168.1.101的时候就会直接转跳到http://192.168.1.101:8080

这样的访问在firebug下看的时候直接可以看到nginx做了301的跳转,跳转目的地就是http://192.168.1.101:8080

这样做就很明显的暴露了我使用了nginx和apache两种服务器,而有些程序就会直接绕过nginx去访问apache了。

方法二:

使用nginx的proxy模块,做反向代理,nginx仍然在80端口,apache也仍然在8080端口

这个时候在nginx中配置这样:

server {
listen       192.168.1.101:80;
server_name  localhost;

location / {
proxy_pass    http://192.168.1.101:8080/;#这里
proxy_redirect default ;#这里
root   html;
index  index.html index.htm;
}
这样在访问的时候看不到301的跳转,直接看到的就是结果,但是这个时候你直接访问http://192.168.1.101:8080也是可以访问的。当然前面也是一样的。

但是有些“聪明”的web程序或是软件,他们还是可以识别出apache在8080端口,他们会在访问的时候就直接绕过nginx而去直接访问apache了,即便事apache绑定在了内网ip上也避免不了这样的问题。

方法三:

使nginx和apache都运行在80端口,而绑定在不同的ip上,比如在nginx中这样配置:

server {
listen       192.168.1.101:80;
server_name  localhost;

location / {
proxy_pass    http://127.0.0.1:80/;
proxy_redirect default ;
root   html;
index  index.html index.htm;
}
apache绑定在127的内网端口上,nginx绑定在其他的ip上,而都绑定80端口。

这样访问都不会有任何问题了。都绑定在80端口上,你直接访问内网的80肯定是不可以的,只有从外网的80端口进入。