Gunicorn 在 apache 后面链接到本地​​主机

Gunicorn 在 apache 后面链接到本地​​主机

我有一个 gunicorn,使用 mod_proxy 在 Apache 后面为 flask 应用程序提供服务。

Gunicorn 已开启http://localhost:8080/。假设我的服务器已开启http://example.com/

有时,当我向服务器发布无效链接(例如忘记了尾随链接)时,假设http://example.com/with-no-trailing-slash用户被重定向到http://localhost:8080/with-no-trailing-slash无效的页面,因为客户端计算机上没有服务器。

你知道为什么会出现这种情况吗?以及如何修复此行为?

要启动 gunicorn,我执行以下操作:sudo gunicorn -b localhost:8080 app:app

<VirtualHost *:80>
ServerName example.com
ServerAlias example.com

DocumentRoot /opt/example

<Proxy *>
    AuthType basic
    AuthBasicAuthoritative Off
    SetEnv proxy-chain-auth On
    Order allow,deny
    Allow from all
</Proxy>

# Let apache serve static files
ProxyPass /robots.txt !
ProxyPass /favicon.ico !
ProxyPass /static/ !
Alias /static/ /opt/example/app/static/

# Gunicorn handle the others
ProxyPass / http://localhost:8080/


# robots.txt et favicon.ico sont dans /path/to/django/project/static/
Alias /robots.txt /path/to/django/project/static/robots.txt
Alias /favicon.ico /path/to/django/project/static/favicon.ico

Alias /favicon.ico /path/to/django/project/static/favicon.ico

<Directory /path/to/django/project>
    Order deny,allow
    Allow from all
    Options -Indexes
</Directory>
</VirtualHost>

如果您需要另一个配置文件,请告诉我!

答案1

您缺少反向映射,而反向映射对于 Apache 重定向 URL 重写非常有用。在 99% 的情况下,正向和反向映射是相同的。

添加此内容:

ProxyPassReverse / http://localhost:8080/

并重新加载 Apache。

相关内容