关于网友提出的“分享一个 Nginx + Apache 公用 80 端口的配置方案。”问题疑问,本网通过在网上对“分享一个 Nginx + Apache 公用 80 端口的配置方案。”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题:分享一个 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;
}
修改一下。
server {
listen 192.168.3.3:80; #指定Nginx只占用某个IP的80端口。
listen 192.168.10.3: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 /data/web_server/admin
ServerName www.ABC.com
这样,Nginx 跟 Apache 就仅会占用指定IP的80端口,不会冲突。
只要调整一下 Nginx proxy 的参数。
“聪明”应用问题就能解决了。
解决方案1:为什么绑定同一个端口,
给个例子, 如果web执行的程序中,有段代码,就是反馈一个指向自己的url
这个时候如果 nginx 反向代理 apache, apache 执行的程序里有这么一段:
echo 'http://'.$_SERVER['SERVER_NAME'].':'.$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
解决方案2:
这个和socket里绑定的inaddrany和一个本地ip的类似啊~~~~
解决方案3:估计楼主的意思是, 用nginx 反向代理 apache 的时候。如果程序中有代码检测web服务器对外服务端口。并使用web对外端口的话。 nginx 就没办法正常做代理服务了。如果端口一致,这样又可以服务了。
如果用nginx 代理 apache , nginx 就需要
proxy_set_header Host
$host
;
解决方案4:
nginx 和 tomcat 的端口配置也能这样搞?
解决方案5:绑定另一IP,同红薯说的绑定域名。
解决方案6:引用来自“polly”的帖子
这样,恐怕apache只能通过http://127.0.0.1:80才能访问,那么他还占用80端口就没有意义了。还不如apache用8080,nginx用80算了。
解决方案7:这样,恐怕apache只能通过http://127.0.0.1:80才能访问,那么他还占用80端口就没有意义了。还不如apache用8080,nginx用80算了。
解决方案8:LS 正解。
解决方案9:绑定域名只是做虚拟主机就可以了的,跟端口没关系
解决方案10:这样设置,Apache还可不可以在192.168.3.3地址上绑定其他域名?
以上介绍了“分享一个 Nginx + Apache 公用 80 端口的配置方案。”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/1337003.html