Назад | Перейти на главную страницу

Gunicorn за ссылкой apache на localhost

У меня есть пулемет, обслуживающий приложение фляги за Apache с использованием mod_proxy.

Gunicorn включен http://localhost:8080/. Допустим, мой сервер включен http://example.com/

Иногда, когда я публикую неверную ссылку на свой сервер (например, забываю конечную), скажем, http://example.com/with-no-trailing-slash, пользователь перенаправляется на http://localhost:8080/with-no-trailing-slash что недопустимо, потому что на клиентском компьютере нет сервера.

Вы знаете, почему он так себя ведет? И как исправить такое поведение?

Чтобы запустить пулемет, я делаю так: 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>

Если вам нужен другой файл конфигурации, дайте мне знать!

Вам не хватает обратного сопоставления, которое как раз полезно Apache для перезаписи URL-адресов перенаправления. В 99% случаев прямое и обратное сопоставления совпадают.

Добавь это :

ProxyPassReverse / http://localhost:8080/

И перезагрузите Apache.