一个典型的 Nginx + Apache 应用方案可以是Nginx 占用 80 端口,过滤静态请求,然后动态请求即 Proxy 到 Apache 的 8080 端口。Proxy 反向代理的好处是访问的时候,始终就是 80 端口,来访者不会觉察到有任何的区别。
但有的应用确非常“聪明”,识别到 Apache 所位于的端口是 8080 ,就会把相关的超链接都一并加上 :8080 的后续。这么就死定了,还能有正常访问麽?!
有个方法可以解决这事,就是把 apache 也运行在80端口上。同一台服务器,有Nginx 也有 Apache,2个httpd服务,都是80,不会冲突麽?
下边就是举例方法。
Nginx.conf 的配置中
?
1
2
3
4
server {
listen 80;
server_name www.webyang.net;
}
修改一下。
?
1
2
3
4
5
server {
listen 192.168.3.3:80; #指定Nginx只占用某个IP的80端口。
listen 192.168.10.3:80; #如果你服务器中有多个IP,还可以指定多个。
server_name www.webyang.net;
}
如果你在Nginx有多个虚拟主机,每一个都需要这么修改。
然后轮到 apache 的 httpd.conf
把原来的
?
1
Listen 80
改为
?
1
Listen 127.0.0.1:80
跟Nginx一样,指定apache所占用的IP及端口。
保存退出,重启apache即可生效。
如果你 apache 上也有多个虚拟主机。无需好像Nginx那样逐一修改,只要都是 80 端口既可。
如:
?
1
2
3
4
5
6
NameVirtualHost *:80
<VirtualHost *:80>
ServerAdmin hello@abc.com
DocumentRoot /data/web_server/admin
ServerName www.webyang.net
</VirtualHost>
这样你是不是以为,就已经万事大吉了?非也。
这样的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
2
3
4
5
6
7
8
9
10
11
12
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了,包括静态文件。
也有很多人下面这种写法:
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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 文件实现。在 Linux 上该文件的路径为 /usr/local/nginx/conf/nginx.conf,Windows 下 安装目录\conf\nginx.conf。
?
1
2
3
4
5
6
server {
listen 80;
server_name localhost;
……
}
改成
?
1
2
3
4
5
6
7
8
9
10
server {
listen 81;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
……
}
当然改成 8080,8081 什么的都可以,不一定要 81,但是确保 iptable 要放开对该端口的访问。
注意到 location 的配置:
?
1
2
root html; #根目录,相对于安装目录
index index.html index.htm; #默认主页
默认,你把文件放在安装目录下的 html 文件夹,即可通过 Nginx 访问。
推荐资讯
- 撞死宠物狗,竟被索赔十万元?车主:不吃不喝也得挣几年
- 喝粥能养胃吗?这样喝粥,才养胃!
- 地板老是发出声音,怎么办?生活中的妙招不得不服~
- 生活中14个最容易要命的细节,害惨很多人!赶紧看丨提醒
- 海带万万不能直接用水泡,很多人做错,难怪又黑又硬不好吃!
- 老年人应如何养胃?细嚼慢咽对肠胃最有利
- 睡前坚持这样做可延年益寿 喝蜂蜜牛奶预防失眠
- 适合冬藏的食材有哪些?红薯有益心脑血管健康
- 老年人适合吃什么水果?猕猴桃有助于调节糖代谢
- 吃素也能有效补充蛋白质 西兰花高纤维零胆固醇
- 茶非人人可饮,喝对了才养生
- 秋天吃这十种宝,胜过冬虫夏草!不吃就亏大了!
- 鼻炎反复老不好?多半肺有问题!1个动作坚持做,呼吸更顺畅
- 晚餐决定寿命?避开这些雷区就能很长寿
- 这些蔬菜别生吃,这几种吃了可能还会中毒
- 生理期这几个谣言千万不要盲目相信 吃甜食能缓解痛经?