Nginx和Apache共用80端口的配置方案

一个典型的 Nginx + Apache 应用方案可以是Nginx 占用 80 端口,过滤静态请求,然后动态请求即 Proxy 到 Apache 的 8080 端口。Proxy 反向代理的好处是访问的时候,始终就是 80 端口,来访者不会觉察到有任何的区别。

但有的应用确非常“聪明”,识别到 Apache 所位于的端口是 8080 ,就会把相关的超链接都一并加上 :8080 的后续。这么就死定了,还能有正常访问麽?!

有个方法可以解决这事,就是把 apache 也运行在80端口上。同一台服务器,有Nginx 也有 Apache,2个httpd服务,都是80,不会冲突麽?

下边就是举例方法。
Nginx.conf 的配置中

  1. server {
  2. listen 80;
  3. server_name www.webyang.net;
  4. }

修改一下。

  1. server {
  2. listen 192.168.3.3:80;#指定Nginx只占用某个IP的80端口。
  3. listen 192.168.10.3:80;#如果你服务器中有多个IP,还可以指定多个。
  4. server_name www.webyang.net;
  5. }

如果你在Nginx有多个虚拟主机,每一个都需要这么修改。

然后轮到 apache 的 httpd.conf
把原来的
Listen 80
改为
Listen 127.0.0.1:80

跟Nginx一样,指定apache所占用的IP及端口。
保存退出,重启apache即可生效。
如果你 apache 上也有多个虚拟主机。无需好像Nginx那样逐一修改,只要都是 80 端口既可。

如:

  1. NameVirtualHost*:80
  2. <VirtualHost*:80>
  3. ServerAdmin hello@abc.com
  4. DocumentRoot/data/web_server/admin
  5. ServerName www.webyang.net
  6. </VirtualHost>

此处参考:http://blog.csdn.net/zajin/article/details/8724113
这样你是不是以为,就已经万事大吉了?非也。

这样的apache只能通过http://127.0.0.1:80才能访问,那么他还占用80端口就没有意义了。还不如apache用8080,nginx用80算了。
所以此时如果你的服务器有多ip,除了把apache绑定在 127.0.0.1 还能绑定另外一张网卡的IP,那么问题就解决。

可是一般人都是只有一个独立ip的,所以这种方法对很多人来讲就是海市蜃楼。
修改一种思路,apache还是8080端口,修改其中的一个nginx的域名的conf文件

  1. location /{
  2. try_files $uri @apache;
  3. }
  4.  
  5. location @apache{
  6. internal;
  7. proxy_pass http://127.0.0.1:8080;
  8. }
  9.  
  10. location ~.*.(php|php5)?$ {
  11. proxy_pass http://127.0.0.1:8080;
  12. }

此时,该域名全部动作都走Apache了,包括静态文件。

也有很多人下面这种写法:

  1. upstream zend {
  2. server 127.0.0.1:8080;
  3. }
  4.  
  5. location /{
  6. proxy_pass http://zend;
  7. proxy_redirect off;
  8. proxy_set_header Host $host;
  9. proxy_set_header X-Real-IP $remote_addr;
  10. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  11. proxy_set_header X-Scheme $scheme;
  12. }
  13.  
  14. location ~.*.(php|php5)?$ {
  15. proxy_pass http://zend;
  16. proxy_redirect off;
  17. proxy_set_header Host $host;
  18. proxy_set_header X-Real-IP $remote_addr;
  19. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  20. proxy_set_header X-Scheme $scheme;
  21. }

大体类似。

之所以最近文章写得很勤,因为最近在家待业,土豪求打赏啊!!!挥泪~

更多猛戳:http://www.webyang.net/Html/web/article_189.html

猜你喜欢

转载自ycdyx.iteye.com/blog/2258291
今日推荐