詳解Nginx與Apache共用80端口的配置方法
一個典型的 Nginx + Apache 應(yīng)用方案可以是Nginx 占用 80 端口,過濾靜態(tài)請求,然后動態(tài)請求即 Proxy 到 Apache 的 8080 端口。Proxy 反向代理的好處是訪問的時候,始終就是 80 端口,來訪者不會覺察到有任何的區(qū)別。
但有的應(yīng)用確非?!奥斆鳌?,識別到 Apache 所位于的端口是 8080 ,就會把相關(guān)的超鏈接都一并加上 :8080 的后續(xù)。這么就死定了,還能有正常訪問麼?!
有個方法可以解決這事,就是把 apache 也運行在80端口上。同一臺服務(wù)器,有Nginx 也有 Apache,2個httpd服務(wù),都是80,不會沖突麼?
下邊就是舉例方法。
Nginx.conf 的配置中
server { listen 80; server_name www.webyang.net; }
修改一下。
server { listen 192.168.3.3:80; #指定Nginx只占用某個IP的80端口。 listen 192.168.10.3:80; #如果你服務(wù)器中有多個IP,還可以指定多個。 server_name www.webyang.net; }
如果你在Nginx有多個虛擬主機,每一個都需要這么修改。
然后輪到 apache 的 httpd.conf
把原來的
Listen 80
改為
Listen 127.0.0.1:80
跟Nginx一樣,指定apache所占用的IP及端口。
保存退出,重啟apache即可生效。
如果你 apache 上也有多個虛擬主機。無需好像Nginx那樣逐一修改,只要都是 80 端口既可。
如:
NameVirtualHost *:80 <VirtualHost *:80> ServerAdmin hello@abc.com DocumentRoot /data/web_server/admin ServerName www.webyang.net </VirtualHost>
這樣你是不是以為,就已經(jīng)萬事大吉了?非也。
這樣的apache只能通過http://127.0.0.1:80才能訪問,那么他還占用80端口就沒有意義了。還不如apache用8080,nginx用80算了。
所以此時如果你的服務(wù)器有多ip,除了把apache綁定在 127.0.0.1 還能綁定另外一張網(wǎng)卡的IP,那么問題就解決。
可是一般人都是只有一個獨立ip的,所以這種方法對很多人來講就是海市蜃樓。
修改一種思路,apache還是8080端口,修改其中的一個nginx的域名的conf文件
location / { try_files $uri @apache; } location @apache { internal; proxy_pass http://127.0.0.1:8080; } location ~ .*.(php|php5)?$ { proxy_pass http://127.0.0.1:8080; }
此時,該域名全部動作都走Apache了,包括靜態(tài)文件。
也有很多人下面這種寫法:
upstream zend { server 127.0.0.1:8080; } location / { proxy_pass http://zend; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Scheme $scheme; } location ~ .*.(php|php5)?$ { proxy_pass http://zend; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Scheme $scheme; }
大體類似。
Nginx的端口修改
修改 nginx.conf 文件實現(xiàn)。在 Linux 上該文件的路徑為 /usr/local/nginx/conf/nginx.conf,Windows 下 安裝目錄\conf\nginx.conf。
server { listen 80; server_name localhost; …… }
改成
server { listen 81; server_name localhost; location / { root html; index index.html index.htm; } …… }
當(dāng)然改成 8080,8081 什么的都可以,不一定要 81,但是確保 iptable 要放開對該端口的訪問。
注意到 location 的配置:
root html; #根目錄,相對于安裝目錄 index index.html index.htm; #默認主頁
默認,你把文件放在安裝目錄下的 html 文件夾,即可通過 Nginx 訪問。
相關(guān)文章
nginx和lvs各自的優(yōu)劣以及適合的使用環(huán)境
這篇文章主要介紹了nginx和lvs各自的優(yōu)劣以及適合的使用環(huán)境,幫助大家選擇符合需求的服務(wù)器,感興趣的朋友可以了解下2020-10-10Nginx 502 Bad Gateway錯誤常見的4種原因和解決方法
這篇文章主要介紹了Nginx 502 Bad Gateway錯誤常見的4種原因和解決方法,本文適用FastCGI環(huán)境,其中多數(shù)原因通過配置相關(guān)參數(shù)即可解決,需要的朋友可以參考下2015-05-05利用nginx+lua+redis實現(xiàn)反向代理方法教程
這篇文章主要給大家介紹了利用nginx+lua+redis實現(xiàn)反向代理方法教程,文中介紹的非常詳細,對大家具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起看看吧。2017-05-05詳解Nginx靜態(tài)服務(wù)配置(root和alias指令)
這篇文章主要介紹了詳解Nginx靜態(tài)服務(wù)配置(root和alias指令),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-01-01filebeat收集多個域名網(wǎng)站日志并存儲到不同es索引庫過程
這篇文章主要為大家介紹了filebeat收集多個域名網(wǎng)站日志并存儲到不同es索引庫過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-08-08