在我的Ubuntu服务器上,我在http://localhost:8069安装了Odoo; Odoo是一个Python应用程序,通过Python服务器提供服务。
首先打开http://localhost:8069时,Odoo会检查当前登录的用户;如果没有,则重定向到http://localhost:8069/web/login;如果有登录用户,则会重定向到http://localhost:8069/web。
我希望在子域上提供http://localhost:8069/web,比如说http://odoo.myserver.com - 这样用户就不必被端口(:8069
部分)和子文件夹分散注意力(/web
部分)。换句话说,用户应该将登录页面设为http://odoo.myserver.com/login(而不是http://localhost:8069/web/login)。
就我而言,http://odoo.myserver.com与服务于Odoo的计算机位于同一台计算机上。所以,我想我会在Apache2中尝试使用反向代理。这是我作为虚拟主机的子域配置:
<VirtualHost *:80>
ServerName odoo.myserver.com
ServerAdmin info@myserver.com
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyRequests Off
ProxyPreserveHost On
<Location />
ProxyPass http://127.0.0.1:8069/web/
ProxyPassReverse http://127.0.0.1:8069/web/
</Location>
ProxyErrorOverride off
</VirtualHost>
当我将此设置为活动状态,并首次在浏览器中加载http://odoo.myserver.com时,我会被重定向到http://odoo.myserver.com/web/login,并且我会收到一个Odoo样式的404&#34; Page not be found&#34 ;页。
如果我尝试没有位置标记,并将/web
本地映射到/web
远程:
<VirtualHost *:80>
ServerName odoo.myserver.com
ServerAdmin info@myserver.com
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyRequests Off
ProxyPreserveHost On
ProxyPass /web/ http://127.0.0.1:8069/web/
ProxyPassReverse /web/ http://127.0.0.1:8069/web/
ProxyErrorOverride off
</VirtualHost>
...然后http://odoo.myserver.com只是给我默认的Apache页面,而http://odoo.myserver.com/web/会重定向到http://odoo.myserver.com/web/login(当我映射为ProxyPass(Reverse) / http://127.0.0.1:8069/web/
时会发生类似情况) - 但这不是我想要的。
编辑:我最接近的是遵循https://serverfault.com/questions/698995/apache-proxypass-redirect-subdomain-to-port-and-path:
<VirtualHost *:80>
ServerName odoo.myserver.com
ServerAdmin info@myserver.com
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyRequests Off
ProxyPreserveHost On
ProxyPass / http://127.0.0.1:8069/
ProxyPassReverse / http://127.0.0.1:8069/
RewriteEngine on
RewriteCond %{REQUEST_URI} !^/web
RewriteRule ^/$ /web/$1 [R,L]
ProxyErrorOverride off
</VirtualHost>
...在这种情况下,当我在浏览器中加载http://odoo.myserver.com时,我被重定向到http://odoo.myserver.com/web/login,并获得了正确的Odoo登录页面。足够接近,但仍然没有,因为/web
部分仍然可见。
那么,如何以这样的方式代理,以及:
...
答案 0 :(得分:0)
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName odoo.myserver.com
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
<Location /login>
ProxyPass / http://127.0.0.1:8069/web/login
ProxyPassReverse / http://127.0.0.1:8069/web/login
</Location>
<Location />
ProxyPass / http://127.0.0.1:8069/web
ProxyPassReverse / http://127.0.0.1:8069/web
</Location>
</VirtualHost>
试试这个配置