Рейтинг:0

Блоки сервера Nginx не перенаправляют

флаг id

Я работаю над проектом в https://modernamedia.no/ и я пытаюсь сделать несколько вещей

  • перенаправлять все звонки на www.modernamedia.no к https://modernamedia.no/
  • proxypass localhost:5000 на api.modernamedia.no
  • перенаправить все http-вызовы на https.

последний работает. однако первые два не работают. Вы можете проверить это сами, зайдя на https://www.modernamedia.no/

Я также изо всех сил пытаюсь добраться до своего локального хоста через вызов API, но это может быть проблема, связанная с кодом.

https://stackoverflow.com/questions/71374284/angular-api-request-to-net-5-api-neterr-connection-refuse

конф.д

сервер {
    если ($ host = www.modernamedia.no) {
        вернуть 301 https://modernamedia.no$request_uri;
    } # управляется Certbot

    если ($ host = modernamedia.no) {
        вернуть 301 https://$host$request_uri;
    } # управляется Certbot

    # Перенаправление в нужное место, если это необходимо
    установить $https_redirect 0;
    если ($ server_port = 80) { установить $ https_redirect 1; }
    if ($host ~ '^www\.') { set $https_redirect 1; }
    если ($ https_redirect = 1) {
        вернуть 301 https://modernamedia.no$request_uri;
    }

    слушать 80;
    имя_сервера modernamedia.no;
    вернуть 404; # под управлением Certbot
}


сервер {
    слушать [::]:443 ssl http2 ipv6only=on;
    слушать 443 ssl http2; # под управлением Certbot
    имя_сервера modernamedia.no;
    место расположения / {
        proxy_pass http://localhost:4000;
        прокси_http_версия 1.1;
        proxy_set_header Обновить $http_upgrade;
        proxy_set_header Соединение «обновление»;
        proxy_set_header Хост $host;
        proxy_cache_bypass $http_upgrade;
    }
    ssl_certificate /etc/letsencrypt/live/modernamedia.no/fullchain.pem; # под управлением Certbot
    ssl_certificate_key /etc/letsencrypt/live/modernamedia.no/privkey.pem; # под управлением Certbot
    включить /etc/letsencrypt/options-ssl-nginx.conf; # под управлением Certbot
    # ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # под управлением Certbot
}


сервер {
    слушать 80;
    имя_сервера www.modernamedia.no;

    вернуть 301 https://modernamedia.no$request_uri;
}

сервер {
    слушать 81;
    имя_сервера api.modernamedia.no;
    корень /var/www/ModernaMedia/DotNet;
    место расположения / {
        proxy_pass http://localhost:5000;
        прокси_http_версия 1.1;
        proxy_set_header Обновить $http_upgrade;
        proxy_set_header Поддержание соединения;
        proxy_set_header Хост $host;
        proxy_cache_bypass $http_upgrade;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $ схема;
    }
}


сайты доступны/по умолчанию

сервер {
    слушать 81;
    имя_сервера api.modernamedia.no;
    корень /var/www/ModernaMedia/DotNet;
    место расположения / {
        proxy_pass http://localhost:5000;
        прокси_http_версия 1.1;
        proxy_set_header Обновить $http_upgrade;
        proxy_set_header Поддержание соединения;
        proxy_set_header Хост $host;
        proxy_cache_bypass $http_upgrade;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $ схема;
    }
}

модернамедиа.сервис

[Ед. изм]
Описание=Сервис ModernMedia Net5
[Оказание услуг]
Рабочий каталог=/var/www/ModernaMedia/DotNet
ExecStart=/usr/bin/dotnet /var/www/ModernaMedia/DotNet/ModernaMediaDotNet.dll
Перезапустить = всегда
# Перезапустите службу через 10 секунд, если произойдет сбой службы dotnet:
Рестартсек=10
KillSignal=SIGINT
SyslogIdentifier=ModernaMedia-dotnet
Пользователь=www-данные
Среда=ASPNETCORE_ENVIRONMENT=Производство
Среда = DOTNET_PRINT_TELEMETRY_MESSAGE = ложь
[Установить]
WantedBy=многопользовательская.цель

И я могу получить доступ к своему серверу .NET через curl

Рейтинг:1
флаг us

Вы должны убедиться, что Certbot не трогает ваши файлы конфигурации nginx. Он использует проблематичный и хрупкий подход к настройке.

Вместо этого используйте следующий подход:

# Перенаправление HTTP-запросов на HTTPS
сервер {
    слушать 80;
    имя_сервера modernamedia.no www.modernamedia.no;

    # Разрешить обслуживание вызовов HTTP-аутентификации Letsencrypt

    расположение /.известный {
        try_files $uri $uri/ =404;
    }

    # Делаем редирект на https
    место расположения / {
        вернуть 301 https://modernamedia.no$request_uri;
    }
}

# Перенаправить https://www.modernamedia.no на https://modernamedia.no
сервер {
    слушать 443 ssl http2;
    имя_сервера www.modernamedia.no;

    ssl_certificate /путь/к/ssl_cert;
    ssl_certificate_key /путь/к/ssl_key;

    вернуть 301 https://modernamedia.no$request_uri;
}

# https://modernamedia.no
сервер {
    слушать 443 ssl http2;
    имя_сервера modernamedia.no;

    ssl_certificate /путь/к/ssl_cert;
    ssl_certificate_key /путь/к/ssl_key;

    # Фактическая конфигурация веб-сайта здесь
}
Stanley avatar
флаг id
Спасибо! Я не знаю, в чем проблема, но ваша конфигурация определенно сработала!
Stanley avatar
флаг id
API.modernamedia.no по-прежнему не работает для перенаправления серверной части .net.
флаг us
Пожалуйста, откройте новый вопрос в приложении dot.net с четким объяснением того, что именно означает «не работает».

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.