Перенаправление HTTP на HTTPS в NGINX с неработающим сервером shiny

#nginx #https #shiny-server

#nginx #https #shiny-сервер

Вопрос:

Здесь я следую этому руководству, чтобы настроить сервер shiny и перенаправить http на https через nginx.

Я установил свои /etc/nginx/sites-available/example.com настройки с помощью приведенных ниже конфигураций. Мне удается получить доступ к блестящему приложению myapp через https://example.com . Это означает, что nginx правильно маршрутизирует https://example.com чтобы http://example.com:3838/myapp .

Проблема в том, что когда я посещаю http://example.com nginx не перенаправляет меня на https://example.com как и должно быть.

Есть идеи, почему это происходит?

 server {
   listen 80 default_server;
   listen [::]:80 default_server ipv6only=on;
   server_name example.com www.example.com;
   return 301 https://$server_name$request_uri;
}

server {
   listen 443 ssl;
   server_name example.com www.example.com;
   ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
   ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
   ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
   ssl_prefer_server_ciphers on;
   ssl_ciphers AES256 EECDH:AES256 EDH:!aNULL;

   location / {
       proxy_pass http://my_server_ip:3838/myapp;
       proxy_redirect http://my_server_ip:3838/myapp/ https://$host/;
       proxy_http_version 1.1;
       proxy_set_header Upgrade $http_upgrade;
       proxy_set_header Connection $connection_upgrade;
       proxy_read_timeout 20d;
   }
}
  

Комментарии:

1. Я думаю, что ошибка здесь. С одной стороны, вы должны ввести адрес приложения, например, 127.0.0.1, а с другой стороны, вы хотите перенаправить в папку /myapp/ . Но это работает по-другому с Nginx. расположение ссылки /myapp/ { …. }

2. Спасибо за ваш комментарий. Я решил это, удалив суффикс /myapp из proxy_pass and proxy_redirect . Тем не менее, я очень удивлен, что nginx перенаправляет на нужное приложение, поскольку на этом сервере shiny доступно несколько приложений, и я не определяю, какое из них я хочу где-либо в файле конфигурации. Это немного похоже на волшебство, и мне это не нравится…

3. Супер, я снова ввел его в качестве ответа, чтобы следующий тоже мог его увидеть.

4. Это не волшебные маршруты Nginx к порту 3838. Вы можете установить его с помощью частей местоположения, таких как «location / myapp { ….»

Ответ №1:

Я думаю, что ошибка здесь. С одной стороны, вы должны ввести адрес приложения, например, 127.0.0.1, а с другой стороны, вы хотите перенаправить в папку /myapp/ . Но это работает по-другому с Nginx.

Удалите: /myapp из proxy_pass и proxy_redirect

Ссылка