詳解Nginx與Apache共用80端口的配置方法
一個(gè)典型的 Nginx + Apache 應(yīng)用方案可以是Nginx 占用 80 端口,過濾靜態(tài)請(qǐng)求,然后動(dòng)態(tài)請(qǐng)求即 Proxy 到 Apache 的 8080 端口。Proxy 反向代理的好處是訪問的時(shí)候,始終就是 80 端口,來訪者不會(huì)覺察到有任何的區(qū)別。
但有的應(yīng)用確非常“聰明”,識(shí)別到 Apache 所位于的端口是 8080 ,就會(huì)把相關(guān)的超鏈接都一并加上 :8080 的后續(xù)。這么就死定了,還能有正常訪問麼?!
有個(gè)方法可以解決這事,就是把 apache 也運(yùn)行在80端口上。同一臺(tái)服務(wù)器,有Nginx 也有 Apache,2個(gè)httpd服務(wù),都是80,不會(huì)沖突麼?
下邊就是舉例方法。
Nginx.conf 的配置中
server { listen 80; server_name www.webyang.net; }
修改一下。
server { listen 192.168.3.3:80; #指定Nginx只占用某個(gè)IP的80端口。 listen 192.168.10.3:80; #如果你服務(wù)器中有多個(gè)IP,還可以指定多個(gè)。 server_name www.webyang.net; }
如果你在Nginx有多個(gè)虛擬主機(jī),每一個(gè)都需要這么修改。
然后輪到 apache 的 httpd.conf
把原來的
Listen 80
改為
Listen 127.0.0.1:80
跟Nginx一樣,指定apache所占用的IP及端口。
保存退出,重啟apache即可生效。
如果你 apache 上也有多個(gè)虛擬主機(jī)。無需好像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算了。
所以此時(shí)如果你的服務(wù)器有多ip,除了把a(bǔ)pache綁定在 127.0.0.1 還能綁定另外一張網(wǎng)卡的IP,那么問題就解決。
可是一般人都是只有一個(gè)獨(dú)立ip的,所以這種方法對(duì)很多人來講就是海市蜃樓。
修改一種思路,apache還是8080端口,修改其中的一個(gè)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; }
此時(shí),該域名全部動(dòng)作都走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 文件實(shí)現(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 要放開對(duì)該端口的訪問。
注意到 location 的配置:
root html; #根目錄,相對(duì)于安裝目錄 index index.html index.htm; #默認(rèn)主頁(yè)
默認(rèn),你把文件放在安裝目錄下的 html 文件夾,即可通過 Nginx 訪問。
相關(guān)文章
Nginx防盜鏈根據(jù)UA屏蔽惡意User Agent請(qǐng)求(防蜘蛛)
相對(duì)于 Apache,Nginx 占用的系統(tǒng)資源更少,更適合 VPS 使用。惡意盜鏈的 User Agent 無處不在,博客更換到 WordPress 沒幾天,就被 SPAM(垃圾留言)盯上,又被暴力破解后臺(tái)用戶名密碼。今天來介紹 Nginx 屏蔽惡意 User Agent請(qǐng)求的方法2016-07-07配置nginx 重定向到系統(tǒng)維護(hù)頁(yè)面
今天抽時(shí)間給大家普及nginx 重定向到系統(tǒng)維護(hù)頁(yè)面的配置內(nèi)容,nginx重定向問題說起來也很簡(jiǎn)單,因?yàn)橹囟ㄏ蚝笾苯犹D(zhuǎn)到靜態(tài)頁(yè)面,不需要后續(xù)操作和記錄,所以直接301永久重定向。今天簡(jiǎn)單給大家介紹配置方法,一起看看吧2021-06-06Nginx實(shí)現(xiàn)基于請(qǐng)求頭的訪問控制配置的示例
在Nginx中,可以使用"allow"和"deny"指令來實(shí)現(xiàn)IP訪問限制,本文給大家介紹Nginx實(shí)現(xiàn)基于請(qǐng)求頭的訪問控制配置,感興趣的朋友一起看看吧2023-11-11nginx配置location?root簡(jiǎn)單方法記錄
Location是Nginx中一個(gè)非常核心的配置,下面這篇文章主要給大家介紹了關(guān)于nginx配置location?root的相關(guān)資料,文中介紹的非常詳細(xì),需要的朋友可以參考下2023-12-12Nginx代理接口訪問返回404的實(shí)現(xiàn)示例
因?yàn)椴煌瑯I(yè)務(wù)系統(tǒng)間有接口調(diào)用,存在跨域問題,為了解決同源策略,需要將接口通過nginx去轉(zhuǎn)發(fā),本文主要介紹了Nginx代理接口訪問返回404的實(shí)現(xiàn)示例,感興趣的可以了解一下2024-06-06樹莓派安裝與配置 Nginx Web 服務(wù)器的詳細(xì)教程
本文詳細(xì)介紹了在樹莓派上安裝和配置Nginx作為Web服務(wù)器的全過程,包括系統(tǒng)更新、Nginx安裝、服務(wù)啟動(dòng)、配置文件修改、虛擬主機(jī)設(shè)置、防火墻配置、自動(dòng)啟動(dòng)設(shè)置、HTTPS配置以及定期日志檢查等步驟,通過這些步驟,可以成功將樹莓派設(shè)置為運(yùn)行Web服務(wù)的服務(wù)器2024-11-11在Nginx中實(shí)現(xiàn)基于IP的訪問控制(IP黑白名單)的具體步驟
在 NGINX 中實(shí)現(xiàn)基于 IP 地址的訪問控制(IP 黑白名單)是一種常見的安全策略,可以通過 allow 和 deny 指令來實(shí)現(xiàn),下面是如何配置黑白名單的步驟,感興趣的小伙伴跟著小編一起來看看吧2025-05-05Nginx 實(shí)現(xiàn)灰度發(fā)布的三種方法總結(jié)
這篇文章主要介紹了Nginx 實(shí)現(xiàn)灰度發(fā)布的三種方法總結(jié)的相關(guān)資料,需要的朋友可以參考下2017-05-05