我正在尝试在两个不同的端口上提供两个不同的Django应用程序。我在端口80上有app1,在端口8080上有app2。所以我期待的是当我将example.com:80
放入浏览器时,我的请求应该从app1提供,当我放入example.com:8080
时在我的浏览器中,我的请求应该从app2提供。但是,有时它会从错误的应用程序提供我的请求。然后,经过几次刷新后,它有时会切换。更重要的是,有时它会从正确的应用程序提供,然后,在几次刷新后,切换到错误的应用程序。我知道这不是因为浏览器端缓存,因为我也尝试从机器发送curl请求,我得到了同样的行为。我无法理解为什么我会得到这种意想不到的,不确定的行为。
这是我的VirtualHost配置:
<VirtualHost *:80>
ServerAlias *
ServerPath /app1/
WSGIScriptAlias /app1 /home/eyuelt/app1/app1/wsgi.py
Alias /app1/static /home/eyuelt/app1/staticfiles
<Directory /home/eyuelt/app1/app1>
<Files wsgi.py>
Order deny,allow
Require all granted
</Files>
</Directory>
<Directory /home/eyuelt/app1/staticfiles>
AllowOverride None
Order Deny,Allow
Require all granted
</Directory>
</VirtualHost>
Listen 8080
<VirtualHost *:8080>
ServerAlias *
ServerPath /app2/
WSGIScriptAlias /app2 /home/eyuelt/app2/app2/wsgi.py
Alias /app2/static /home/eyuelt/app2/staticfiles
<Directory /home/eyuelt/app2/app2>
<Files wsgi.py>
Order deny,allow
Require all granted
</Files>
</Directory>
<Directory /home/eyuelt/app2/staticfiles>
AllowOverride None
Order Deny,Allow
Require all granted
</Directory>
</VirtualHost>
答案 0 :(得分:0)
我怀疑这可能是问题所在:
http://httpd.apache.org/docs/2.2/vhosts/examples.html
这就是您想要的:您有多个域转到同一个IP 并且还想服务多个端口。通过定义中的端口 &#34;&了NameVirtualHost#34;标签,你可以允许这个工作。
其中一个或两个可能是问题:如果您尝试使用 没有NameVirtualHost名称:port或者你 尝试使用Listen指令,您的配置将无法正常工作。
服务器示例:
Listen 80
Listen 8080
NameVirtualHost 172.20.30.40:80
NameVirtualHost 172.20.30.40:8080
<VirtualHost 172.20.30.40:80>
ServerName www.example.com
DocumentRoot /www/domain-80
</VirtualHost>
<VirtualHost 172.20.30.40:8080>
ServerName www.example.com
DocumentRoot /www/domain-8080
</VirtualHost>
<VirtualHost 172.20.30.40:80>
ServerName www.example.org
DocumentRoot /www/otherdomain-80
</VirtualHost>
<VirtualHost 172.20.30.40:8080>
ServerName www.example.org
DocumentRoot /www/otherdomain-8080
</VirtualHost>