Nginx + Apache 公用80端口的配置


一個典型的 Nginx + Apache 應用方案可以是Nginx 占用 80 端口,過濾靜態請求,然后動態請求即 Proxy 到 Apache 的 8080 端口。Proxy 反向代理的好處是訪問的時候,始終就是 80端口,來訪者不會覺察到有任何的區別。

但有的應用確非常“聰明”,識別到 Apache 所位於的端口是 8080 ,就會把相關的超鏈接都一並加上 :8080 的后續。這么就死定了,還能有正常訪問麽?!有個方法可以解決這事,就是把 apache 也運行在80端口上。
同一台服務器,有Nginx 也有 Apache,2個httpd服務,都是80,不會沖突麽?

下邊就是舉例方法。
Nginx.conf 的配置中
server {
listen 80;
server_name www.ABC.com;

root /var/www

}
修改一下。
server {
listen 公網IP123.123.123.123:80; #指定Nginx只占用某個IP的80端口。#如果你服務器中有多個IP,還可以指定多個。
server_name www.ABC.com;
}
如果你在Nginx有多個虛擬主機,每一個都需要這么修改。

 

然后輪到 apache 的 httpd.conf
把原來的
Listen 80
改為
Listen 127.0.0.1:80
跟Nginx一樣,指定apache所占用的IP及端口。
保存退出,重啟apache即可生效。
如果你 apache 上也有多個虛擬主機。無需好像Nginx那樣逐一修改,只要都是 80 端口既可。
如:
NameVirtualHost *:80
ServerAdmin hello@abc.com
DocumentRoot /var/www/admin
ServerName admin.ABC.com

(這里用管理后台域名綁定后台目錄,類似manager.***.com)
(這樣,恐怕apache只能通過http://127.0.0.1:80才能訪問,那么他還占用80端口就沒有意義了。還不如apache用8080,nginx用80算了。沒有認真看,有“聰明” 的應用檢測到apache使用的是8080端口,會把應用里頭所有的超鏈接都加上:8080結尾,為了解決該問題,所以才有這一文。而且多數服務器都具備2張網卡,除了把apache綁定在 127.0.0.1 還能綁定另外一張網卡的IP,這么問題就解決。)
這樣,Nginx 跟 Apache 就僅會占用指定IP的80端口,不會沖突。
只要調整一下 Nginx proxy 的參數。
“聰明”應用問題就能解決了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM