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

NGINX: запретить пользователям просматривать веб-сайт через порт (example.com:5000)

Я установил ubuntu VPS, на котором запущено приложение django. я использую waitress как сервер WSGI и whitenoise для обслуживания статических файлов. Также nginx обслуживает медиа-папку. Текущая настройка отлично работает на example.com но я бы хотел, чтобы веб-сайт не отображался до example.com:5000 поскольку медиафайлы обслуживаются в этом порту.

Команда, которую я использую для запуска сервера:

web: PYTHONUNBUFFERED=true env/bin/waitress-serve --port=$PORT project.wsgi:application

И конфигурация nginx:

upstream app_server {
    server 127.0.0.1:5000 fail_timeout=0;
}

server {
    listen 80 default_server;
    server_name _;

    client_max_body_size 4G;
    keepalive_timeout 10;

    location /uploads/ {
        alias /opt/media/;
    }

    location / {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_pass http://app_server;
    }
}

Можно ли скрыть сайт от example.com:5000?

Пс. В худшем случае - могу ли я также обслуживать медиа через порт 5000?

Из вашей конфигурации похоже, что nginx не слушает порт 5000. Таким образом, вы должны выяснить, что на самом деле прослушивает этот порт, и заблокировать его для внешнего мира - самый простой способ - привязать его только к localhost. Таким образом, он будет доступен для nginx, но не для всех, кто не на этой машине.