Рейтинг:0

Nginx, Cloudflare, проблемы с субдоменами

флаг bd

NGINX Новичок здесь, я пытаюсь настроить то, что я считаю немного сложной задачей. Мне нужна следующая структура:

  • www.example.com -- Веб-сайт для компании. На данный момент оба www.example.com а example.com должен перенаправлять на project.example.com.

  • project.example.com Веб-сайт для проекта

  • project.example.com/app1 -- Приложение 1 для проекта

  • project.example.com/app2 -- Приложение 2 для проекта

  • api.example.com -- API для проекта, прослушивающего порт 3001. Предпочтительно, чтобы такие маршруты, как: www.api.example.com или api.example.com для автоматического перенаправления на https://api.example.com.

Примечание. Я пытаюсь перенаправить все блоки на https.

До сих пор я пробовал следующее и довольно много вариантов здесь:

сервер {
    слушать 80;
    слушать [::]:80;
    имя_сервера example.com www.example.com;
    вернуть 302 https://project.$server_name$request_uri;
}

# Перенаправление API на SSL
сервер {
    слушать 80;
    слушать [::]:80;
    имя_сервера api.example.com www.api.example.com;
    вернуть 302 https://api.example.com$request_uri;
}

сервер {
    слушать 443 ssl http2;
    слушать [::]:443 ssl http2;
    имя_сервера www.api.example.com;
    вернуть 302 https://api.example.com$request_uri;

    ssl_certificate /etc/ssl/cert.pem;
    ssl_certificate_key /etc/ssl/key.pem;
    ssl_client_certificate /etc/ssl/cloudflare.crt;
    ssl_verify_client включен;
}

сервер {
    слушать 443 ssl http2;
    слушать [::]:443 ssl http2;
    имя_сервера example.com www.example.com;
    корень /var/www/html/example-website;
    индекс index.html index.htm index.nginx-debian.html;
    вернуть 302 https://project.$server_name$request_uri;

    # конфигурация SSL
    ssl_certificate /etc/ssl/cert.pem;
    ssl_certificate_key /etc/ssl/key.pem;
    ssl_client_certificate /etc/ssl/cloudflare.crt;
    ssl_verify_client включен;

    место расположения / {
      try_files $uri $uri/ =404;
    }
}

сервер {
    слушать 443 ssl http2;
    слушать [::]:443 ssl http2;
    имя_сервера project.example.com www.project.example.com;
    корень /var/www/html/проект-сайт;
    индекс index.html index.htm index.nginx-debian.html;

    # конфигурация SSL
    ssl_certificate /etc/ssl/cert.pem;
    ssl_certificate_key /etc/ssl/key.pem;
    ssl_client_certificate /etc/ssl/cloudflare.crt;
    ssl_verify_client включен;

    место расположения / {
      try_files $uri $uri/ =404;
    }

    местоположение / приложение1 {
       псевдоним /var/www/html/project-app1;
       try_files $uri /project-app1/index.html;
    }

    местоположение / приложение2 {
       псевдоним /var/www/html/project-app2;
       try_files $uri /project-app2/index.html;
    }
}

сервер {
  слушать 443 ssl http2;
  слушать [::]:443 ssl http2;
  имя_сервера api.example.com www.api.example.com;
  преобразователь 127.0.0.1;

  ssl_certificate /etc/ssl/cert.pem;
  ssl_certificate_key /etc/ssl/key.pem;
  ssl_client_certificate /etc/ssl/cloudflare.crt;
  ssl_verify_client включен;

    место расположения / {
    переписать ^/api/?(.*) /$1 break;
    прокси_пароль https://127.0.0.1:3001; #API-сервер
    прокси_перенаправление выключено;
    proxy_set_header Хост $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $ схема;
    }  
}

Я новичок в NGINX, поэтому я не уверен, что то, что я сделал, нормально или даже близко к тому, что большинство считает хорошей практикой.

Что я достиг до сих пор:

  • www.example.com а example.com по умолчанию перенаправляет на сайт project.example.com.
  • и... Раньше у меня работали приложения app1 и app2, но я не знаю, что я испортил, что они больше не работают :(

В любом случае, дополнительные вещи, чтобы упомянуть:

  • Среда: экземпляр AWS EC2,
  • Сертификаты и DNS: Cloudflare.

Образ DNS, объявленный и проксированный через Cloudflare

  • Приложения: это приложения Angular, и у меня были проблемы с дочерними маршрутами, такие как:
    • project.example.com/app1 -- был доступен (в какой-то момент больше не был)
    • project.example.com/app1/home — выдаст ошибку 404 «Не найдено». Насколько мне известно, когда-то мне удалось исправить такую ​​вещь на сервере Apache, поэтому я думаю, что могу найти аналогичное исправление для этого случая для NGINX.
  • api.example.com — этот файл даже не перенаправляется с www.api.example.com, и я не могу подключиться к API прямо через конечные точки. Выдает 502 в лучшем случае. Извините за такой длинный пост, но хотел быть как можно более ясным, и большое спасибо за любую дальнейшую помощь, которую вы могли бы мне оказать для достижения этих целей, очень ценю это.

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

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