详解Nginx与Apache共用80端口的配置方法

这篇文章主要介绍了Nginx与Apache共用80端口的配置方法,当然如果想Nginx不与Apache抢80端口的话,本文后面也附带了Nginx的端口修改方法,需要的朋友可以参考下

一个典型的 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.webyang.net;
}

修改一下。

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
把原来的

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>

这样你是不是以为,就已经万事大吉了?非也。

这样的apache只能通过http://127.0.0.1:80才能访问,那么他还占用80端口就没有意义了。还不如apache用8080,nginx用80算了。
所以此时如果你的服务器有多ip,除了把apache绑定在 127.0.0.1 还能绑定另外一张网卡的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了,包括静态文件。

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

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。

server {
 listen  80;
 server_name localhost;
 
 ……
}

改成

server {
 listen  81;
 server_name localhost;
 
 location / {
 root html;
 index index.html index.htm;
 }
 ……
}

当然改成 8080,8081 什么的都可以,不一定要 81,但是确保 iptable 要放开对该端口的访问。

注意到 location 的配置:

root html; #根目录,相对于安装目录 
index index.html index.htm; #默认主页

默认,你把文件放在安装目录下的 html 文件夹,即可通过 Nginx 访问。

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

一:确定你的系统是UTF编码 [root@Tserver ~]# env|grep LANG LANG=en_US.UTF-8 二:NGINX配置文件里默认编码设置为utf-8 server { listen 80; server_name .inginx.com ; index index.html index.htm index.php; root /usr/local/nginx/html/inginx.com; ch
安装 Apache 出现 OS 10013 以一种访问权限不允许的方式做了一个访问套接字的尝试 如下截图: 提示: make_sock: could not bind to address 0.0.0.0:80 这个问题有由于计算机上安装了IIS7,80端口已占用。 打开Apache 的配置文件 Apache安装目录下的conf/htt
很多网站需要采用伪静态来访问动态网页。所以像phpcms这样的系统,都提供了一个.htaccess文件,供写伪静态规则。但这个规则是针对Apache的。在nginx服务器上并不起作用。 nginx 可以直接将伪静态规则写在配置文件中,但这个需要有服务器管理权限,普通站长不
在网站建设中需要网页重定向的情况很多:如网页目录结构变动,网页重命名、网页的扩展名改变、网站域名改变等。如果不做重定向,用户的收藏和搜索引 擎数据库中的旧地址只能让访客得到一个404错误信息页面,访问流量白白丧失。不仅如此,之前该页面的一切积
apache web服务器的站点,下载pptx,docx,xlsx文件,却被浏览器当作zip文件保存。 这不是浏览器的问题,而是apache不认docx,pptx,,xlsx等Microsoft Office 2007+的文件格式,而这些文件本身是zip压缩文件,所以被apache当作zip压缩文件发给浏览器了。 做个形
利用nginx泛域名解析配置二级域名和多域名 网站的目录结构为 html ├── bbs └── www html为nginx的安装目录下默认的存放源代码的路径。 bbs为论坛程序源代码路径 www为主页程序源代码路径 把相应程序放入上面的路径通过 http://www.youdomain.com 访问