Tal*_*boY 11 virtualhost apache-2.4
我正在尝试在运行 centos7.1 的单个服务器上托管我的网站。我可以在端口上虚拟主机,80
但是当我将端口更改second-site
为8080
它指向first-site
. 但是,对于 URLhttp://62.210.xx.xx:8080/
其正常工作,指向second-site
.
我这样做:
配置文件
Listen 80
Listen 8080
also tried
Listen 0.0.0.0:80
Listen 0.0.0.0:8080
but same
commented out for apache 2.4
#NameVirtualHost 62.210.xx.xx:80
#NameVirtualHost 62.210.xx.xx:8080
ServerAdmin root@localhost
#first-site.com
<VirtualHost 62.210.xx.xx:80>
ServerName first-site.com
ServerAlias www.first-site.com
DocumentRoot /var/www/first-site
</VirtualHost>
#second-site.com
<VirtualHost 62.210.xx.xx:8080>
ServerName second-site.com
ServerAlias www.second-site.com
DocumentRoot /var/www/second-site
</VirtualHost>
netstat -tulpn | grep httpd
tcp6 0 0 :::80 :::* LISTEN 25253/httpd
tcp6 0 0 :::8080 :::* LISTEN 25253/httpd
/etc/host/
62.210.xx.xx www.first-site.com first-site.com www.second-site.com second-site.com
/usr/sbin/httpd -t
AH00548: NameVirtualHost has no effect and will be removed in the next release /etc/httpd/conf/httpd.conf:46
Syntax OK
Run Code Online (Sandbox Code Playgroud)
更新
apachectl -S
AH00558: httpd: Could not reliably determine the server's fully qualified domain name,
using 62.210.xx.xx. Set the 'ServerName' directive globally to suppress this message
VirtualHost configuration:
62.210.xx.xx:8080 m.second-site.com (/etc/httpd/conf/httpd.conf:427)
62.210.xx.xx:80 is a NameVirtualHost
default server first-site.com (/etc/httpd/conf/httpd.conf:363)
port 80 namevhost first-site.com (/etc/httpd/conf/httpd.conf:363)
alias www.first-site.com
port 80 namevhost image.first-site.com (/etc/httpd/conf/httpd.conf:3 77)
port 80 namevhost m.first-site.com (/etc/httpd/conf/httpd.conf:389)
port 80 namevhost second-site.com (/etc/httpd/conf/httpd.conf:401)
alias www.second-site.com
port 80 namevhost image.second-site.com (/etc/httpd/conf/httpd.conf:415)
port 80 namevhost third-site.com (/etc/httpd/conf/httpd.conf:439)
alias www.third-site.com
port 80 namevhost image.third-site.com (/etc/httpd/conf/httpd.conf:453)
ServerRoot: "/etc/httpd"
Main DocumentRoot: "/var/www/html"
Main ErrorLog: "/etc/httpd/logs/error_log"
Mutex proxy: using_defaults
Mutex authn-socache: using_defaults
Mutex default: dir="/run/httpd/" mechanism=default
Mutex mpm-accept: using_defaults
Mutex fcgid-pipe: using_defaults
Mutex authdigest-opaque: using_defaults
Mutex proxy-balancer-shm: using_defaults
Mutex rewrite-map: using_defaults
Mutex authdigest-client: using_defaults
Mutex fcgid-proctbl: using_defaults
PidFile: "/run/httpd/httpd.pid"
Define: DUMP_VHOSTS
Define: DUMP_RUN_CFG
User: name="xxxxxxx" id=1000
Group: name="root" id=0
Run Code Online (Sandbox Code Playgroud)
尝试使Listen
语句与您的VirtualHost
.
如果你只想绑定到公网IP 62.210.xx.xx,到处使用。
Listen 62.210.xx.xx:80
Listen 62.210.xx.xx:8080
<VirtualHost 62.210.xx.xx:80>
ServerName first-site.com
ServerAlias www.first-site.com
DocumentRoot /var/www/first-site
</VirtualHost>
<VirtualHost 62.210.xx.xx:8080>
ServerName second-site.com
ServerAlias www.second-site.com
DocumentRoot /var/www/second-site
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
- 或者 -
如果要绑定到该服务器上的所有接口,请使用通配符。
Listen 80
Listen 8080
<VirtualHost *:80>
ServerName first-site.com
ServerAlias www.first-site.com
DocumentRoot /var/www/first-site
</VirtualHost>
<VirtualHost *:8080>
ServerName second-site.com
ServerAlias www.second-site.com
DocumentRoot /var/www/second-site
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
本质上,该Listen
语句告诉 apache 绑定到该 IP/端口。指定 0.0.0.0:80 只会侦听 ipv4 地址。仅指定端口号将绑定到端口 80 上的所有接口。
同样,当 SYN 数据包进来时,VirtualHost 语句会尝试根据这些Listen
语句进行匹配。
小智 1
正如 Inigo Flores 已经指出的那样,这是默认的 apache 行为。
通过在浏览器中输入 secondary-site.com,它将始终连接到端口 80。如果您想访问其他端口,则需要在 url 中指定它,例如 secondary-site.com:8080
如果您想访问您的网站(例如 secondary-site.com),则使用不同的端口是没有意义的。
归档时间: |
|
查看次数: |
31490 次 |
最近记录: |