如何在apache2上进行服务响应多个端口上的请求

时间:2016-08-22 19:11:18

标签: bash configuration apache2

我有一个我在/var/www/html托管的网站。我能够使用my.ip.add.res访问它。现在我希望能够从多个端口访问它。我的意思是浏览器中的所有三个网址my.ip.add.res:80my.ip.add.res:8000my.ip.add.res:8950都应该指向相同的网站。

我尝试了什么:

第1步:在/etc/apache2/ports.conf文件中,Listen 80已存在。我添加了Listen 8000Listen 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.confmyservice2.conf。我分别在VirtualHost *:80>VirtualHost *:8000>个文件中将第一个语句VirtualHost *:8950>更改为myservice1.confmyservice2.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.

2 个答案:

答案 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上已经运行了两个服务。我能够获得除这两个端口之外的所有端口。