![ubuntu apache2 虚拟主机在端口 80 以外的正确配置是什么](https://linux22.com/image/591546/ubuntu%20apache2%20%E8%99%9A%E6%8B%9F%E4%B8%BB%E6%9C%BA%E5%9C%A8%E7%AB%AF%E5%8F%A3%2080%20%E4%BB%A5%E5%A4%96%E7%9A%84%E6%AD%A3%E7%A1%AE%E9%85%8D%E7%BD%AE%E6%98%AF%E4%BB%80%E4%B9%88.png)
我刚刚继承了一个服务器 ubuntu 10.04,它已经在端口 80 上运行 tomcat。因此 apache 2/etc/apache2/ports.conf
已经监听 8858。
我将我的子域名(比如说 admin.domain.com)指向该框的 ip,这样xx.xx.xx.xx:8858
两者admin.domain.com:8858
都会将我发送到根文件“它起作用了”
所以我确实在下面创建了/var/www/vhots/admin.domain.com/htdocs
,/var/www/vhots/admin.domain.com/log
我的第一个配置如下所示,基本上在重新加载并重新启动 apache2 后,出现了这个错误
VirtualHost *:8858 - 不支持混合使用 NameVirtualHost 地址的 * 端口和非 * 端口,否则将导致未定义的结果 httpd(pid 7466?)未运行
###/etc/apache2/apache2.cong
NameVirtualHost *
#NameVirtualHost *:8858
<VirtualHost *>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog /var/log/apache2/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog /var/log/apache2/access.log combined
ServerSignature On
Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
</Virtualhost>
###/etc/apache2/sites-available/admin.domain.com
<VirtualHost *:8858>
ServerAdmin [email protected]
ServerName admin.domain.com
ServerAlias www.admin.domain.com
DocumentRoot /var/www/vhots/admin.domain.com/htdocs
<Directory /var/www/vhosts/admin.domain.com/htdocs>
Options Indexes FollowSymLinks MultiViews
AllowOverride all
Order allow,deny
allow from all
</Directory>
ErrorLog /var/www/vhosts/admin.domain.com/log/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog /var/www/vhosts/admin.domain.com/log/access.log combined
ServerSignature On
</VirtualHost>
因此读完之后这我取消了最初放在这里的 NameVirtualHost *:8858 的注释,这样我就同时拥有 NameVirtualHost * 和 NameVirtualHost *:8858,现在我收到一条警告消息,但服务器拒绝启动
NameVirtualHost *:8858 没有 VirtualHosts httpd (pid 27536?) 未运行 [警告] NameVirtualHost *:8858 没有 VirtualHosts [失败]
我该如何才能勃起?感谢您阅读此文
答案1
答案2
如果您已经在端口 80 上运行 Tomcat,则无法将 Apache 连接到同一端口。没有端口的 HTTP URL,例如http://admin.domain.com,假定端口为 80。
因此,为了使您的网站无需端口 (:8858) 即可访问,您需要将 Tomcat 移动到另一个端口。
如果同一台服务器上有 2 个 IP 地址,例如 xxx1 和 xxx2,还有另一种解决方案。然后使用以下命令将 Tomcat 指向第一个地址,将 Apache 指向第二个地址:
# Apache configuration
NameVirtualHost x.x.x.2:80
<VirtualHost x.x.x.2:80>
#Your site configuration
</virtualHost>
在这种情况下,请不要忘记重新指向正确的 DNS 条目。