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

Nginx не перенаправляет запросы личного домена на правильный порт

У меня есть веб-сайт, который позволяет пользователям создавать портфолио для своих веб-сайтов, они просто меняют свои записи A в своем домене и помещают IP-адрес моего сервера в свои записи, и он будет отображаться на их веб-сайте (user1.example.com). Моя проблема в том, что я купил домен для тестирования (example.com), и он направляет их на домашнюю страницу моего настоящего веб-сайта, где вы можете использовать эту услугу.

Единственный способ, которым пользователь может получить доступ к своему веб-сайту, - это: http://example.com:3000 - 3000 - это порт, на котором работает мое приложение Node.js. Моя конфигурация Nginx ниже, может кто-нибудь бросить мне кость?

server {
    listen 80;
    listen 443 ssl;
    listen [::]:443 ssl;

    ssl_certificate /etc/nginx/ssl/example.com/cert_chain.crt;
    ssl_certificate_key /etc/nginx/ssl/example.com/example.com.key;

    server_name example.com *.example.com "";
    access_log /var/log/nginx/nginx.vhost.access.log;
    error_log /var/log/nginx/nginx.vhost.error.log;

    root /opt/33i/;

    # Perfect forward secrecy
    ssl_prefer_server_ciphers on;
    ssl_dhparam /etc/nginx/ssl/example.com/dhparams.pem;
    ssl_ciphers ;

    # HSTS
    add_header Strict-Transport-Security "max-age=31536000; includeSubdomains";

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_set_header X_FORWARDED_PROTO https;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_set_header X-Url-Scheme $scheme;
        proxy_redirect off;
        proxy_max_temp_file_size 0;
    }
}

Любые идеи? Это сводило меня с ума!

Я думаю, проблема может быть в server_name линия.

На данный момент он соответствует следующим видам запросов:

  • Host: заголовок example.com
  • Host: заголовок заканчивается на .example.com
  • Host: заголовок отсутствует

Это означает, что эта конфигурация не соответствует произвольным доменам, что похоже на то, что вы хотите.

Теперь, скорее всего, у вас есть еще один server block в вашей конфигурации с помощью:

слушать 443 ssl default_server;

Виртуальный хост, содержащий эту директиву, является универсальным виртуальным хостом для запросов, которые иначе не совпадают.

Итак, чтобы решить вашу проблему, вам нужно удалить default_server директива от server заблокировать, где он сейчас, и добавить default_server к этим блокам ' listen директивы.