我有一个我在/var/www/html
托管的网站。我能够使用my.ip.add.res
访问它。现在我希望能够从多个端口访问它。我的意思是浏览器中的所有三个网址my.ip.add.res:80
,my.ip.add.res:8000
和my.ip.add.res:8950
都应该指向相同的网站。
我尝试了什么:
第1步:在/etc/apache2/ports.conf
文件中,Listen 80
已存在。我添加了Listen 8000
和Listen 8950
。该文件看起来像:
Listen 80
Listen 8000
Listen 8950
<IfModule ssl_module>
Listen 443
</IfModule>
<IfModule mod_gnutls.c>
Listen 443
</IfModule>
第2步:在/etc/apache2/sites-available
目录中,有一个文件000-default.conf
。我将其复制到两个文件:myservice1.conf
和myservice2.conf
。我分别在VirtualHost *:80>
和VirtualHost *:8000>
个文件中将第一个语句VirtualHost *:8950>
更改为myservice1.conf
和myservice2.conf
。
第3步:我已将这些文件的符号链接建立到/etc/apache2/sites-enabled
中的相应文件。这就是我的意思:
root@virtual-machine:/etc/apache2/sites-enabled# ls -l
total 0
lrwxrwxrwx 1 root root 35 Jul 7 09:18 000-default.conf -> ../sites-available/000-default.conf
lrwxrwxrwx 1 root root 46 Aug 22 11:45 loginservice.conf -> /etc/apache2/sites-available/loginservice.conf
lrwxrwxrwx 1 root root 44 Aug 22 11:44 scfservice.conf -> /etc/apache2/sites-available/scfservice.conf
第4步:然后我重新启动了Apache2服务器
root@virtual-machine:/etc/apache2/sites-enabled# /etc/init.d/apache2 restart
[ ok ] Restarting apache2 (via systemctl): apache2.service.
结果是:
my.ip.add.res
:指向正确的网站
my.ip.add.res:80
:指向正确的网站
my.ip.add.res:8000
:无法连接
my.ip.add.res:8950
:没有这样的资源(即使我停止服务器......令人惊讶)
我做错了什么或错过了什么?
Edit1:正如jedifans所建议的,我尝试了apachectl -S
。下面是输出。
root@virtual-machine:/etc/apache2/sites-available# apachectl -S
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
VirtualHost configuration:
*:80 127.0.1.1 (/etc/apache2/sites-enabled/000-default.conf:1)
*:8950 127.0.1.1 (/etc/apache2/sites-enabled/loginservice.conf:1)
*:8000 127.0.1.1 (/etc/apache2/sites-enabled/scfservice.conf:1)
ServerRoot: "/etc/apache2"
Main DocumentRoot: "/var/www/html"
Main ErrorLog: "/var/log/apache2/error.log"
Mutex watchdog-callback: using_defaults
Mutex default: dir="/var/lock/apache2" mechanism=fcntl
Mutex mpm-accept: using_defaults
PidFile: "/var/run/apache2/apache2.pid"
Define: DUMP_VHOSTS
Define: DUMP_RUN_CFG
User: name="www-data" id=33
Group: name="www-data" id=33
编辑2:
root@virtual-machine:/etc/apache2/sites-available# telnet 127.0.0.1 8000
Trying 127.0.0.1...
telnet: Unable to connect to remote host: Connection refused
root@virtual-machine:/etc/apache2/sites-available# telnet 127.0.0.1 8950
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
# gets stuck here. I have to ctrl + C to come out.
答案 0 :(得分:0)
Listen 80
Listen 8000
Listen 8950
<VirtualHost *:80>
ServerName www.example.com
DocumentRoot "/var/www/html"
</VirtualHost>
<VirtualHost *:8000>
ServerName www.example.com
DocumentRoot "/var/www/html"
</VirtualHost>
<VirtualHost *:8950>
ServerName www.example.org
DocumentRoot "/var/www/html"
</VirtualHost>
确保将文档根目录用于/ var / www / html,如果要在http.conf末尾添加此行,那么如果您希望保留两个单独的文件,则无需添加两个单独的文件确保你有一个
Include sites-available/*.conf
如果您将ServerRoot作为/ etc / apache2 / inn,则上面的Include为真
然而,更简单的方法是将上述配置添加到http.conf文件的末尾
答案 1 :(得分:0)
找出了问题所在。我的所有步骤都是绝对正确的。但是,端口8000和8950上已经运行了两个服务。我能够获得除这两个端口之外的所有端口。