如何在同一台主机上配置多个80端口的服务?

问题1.要想使用 http://ip:80/path?getarg=xxx 方式访问WEB服务时,只需要配置监听80端口就行了?比如假设服务A:
server {

listen 80 ;
location /xxxx{
    proxy_pass http://xxxx.com;
    include proxy.conf;
    access_log /data1/logs/nginx/xxxxx-access_log main;
    error_log /data1/logs/nginx/xxxxx-error_log;
}
...

}

问题二:如果我有多个项目配置80端口,那使用ip:80方式访问到哪个服务?
每个项目配置文件独立的,即server部分独立,然后用include方式加载到nginx.conf文件里的。比如服务B:
server {

listen 80 ;
location /xxxx2{
    proxy_pass http://xxxx2.com;
    include proxy.conf;
    access_log /data1/logs/nginx/xxxx2x-access_log main;
    error_log /data1/logs/nginx/xxxxx2-error_log;
}
...

}
我记得在nginx重启时会报80端口已被占用的,也就是拒绝nclude后面那个文件,现在发现没有这提示能重启成功了。既然能重启表示两个服务起来了,那如果我使用http://ip:80/path?getarg=xxx 方式访问,会访问到服务A 还是服务B ?假设severA serverB都有相同的location 匹配。

阅读 6.7k
7 个回答

端口在系统中是唯一的 http://IP:端口 IP就如同大楼 端口如果门牌号

所以可以肯定问题的答案: 同一台主机上不能配置多个80端口的服务, 一个端口只能对应一系统上的一个服务.

如果你是想运行多个WEB项目的话,可以通过虚拟主机来解决

A项目 => a.xxx.com

B项目 => b.xxx.com

每个server指定不同的server_name即可都监听80端口

你可能需要指定contextpath(即同一个server{}里定义多个location)或域名。
同一端口,可以指定多个域名

你说的80是要nginx和什么服务一起占用?还是说虚拟主机的问题?

同一个server{}里定义多个location就行了,对外都是80,根据不同路径访问不同应用
clipboard.png

只能通过servername 配置

192.168.xxx.xxx/aaa/ 到项目1
192.168.xxx.xxx/bbb/ 到项目2

就是虚拟目录

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题