我想让我的 apache 2 开发服务器公开到互联网,它是一个基于 Django 的网站。
这是我的 apache2 配置:
<VirtualHost *:80>
Alias /media /home/user/myproject/statics
Alias /admin_media /home/myuser/django/Django-1.1.1/django/contrib/admin/media
WSGIScriptAlias / /home/myuser/myproject/myproject_wsgi.py
WSGIDaemonProcess myproject user=myuser group=myuser threads=25
WSGIProcessGroup myproject
</VirtualHost>
当我做netstat -lntup
我得到:
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN -
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN -
tcp6 0 0 :::80 :::* LISTEN -
tcp6 0 0 :::22 :::* LISTEN -
tcp6 0 0 ::1:631 :::* LISTEN -
udp 0 0 0.0.0.0:5353 0.0.0.0:* -
udp 0 0 0.0.0.0:38582 0.0.0.0:*
我使用 ADSL 连接,因此我位于路由器后面。为此,我已将计算机的 DMZ 启用到我的机器。
可能存在什么问题?当我尝试使用我的 IP 登录时,我得到了我的路由器配置页面,当一个朋友尝试从互联网连接到我时,他得到“未授权”的提示。
答案1
您需要使用路由器配置来执行端口 80 的端口转发。但并非所有路由器都支持端口转发。
此外,一个 IP(您的公共 IP)不能共享一个端口。端口 80 被路由器自己的 Web 服务器(处理路由器配置界面)使用。您可能需要将非标准端口(如 8080)从路由器转发到 Apache 服务器的端口 80。在这种情况下,您的朋友可以使用http://你的公共 IP:8080/
第三,确保 Apache 配置为在 IPv4 上的端口 80 上工作。根据您的 netstat 输出,它目前仅在端口 80 上绑定到 IPv6。
要进行测试,首先你应该在 Apache 服务器上进行本地测试http://127.0.0.1/可以了。一旦运行正常,您就可以添加端口转发以供外部访问。