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

Объединение правил перенаправления Nginx

Я только что перенес приложение Rails с сервера Apache / Passenger на новый сервер Nginx / Unicorn, и у меня возникли проблемы с тем, чтобы заставить работать необходимые перенаправления.

Пока что конфигурация (которая была настроена кем-то еще до меня) успешно перенаправляет посещения на http(s)://example.com/ к http://www.example.com/

У меня проблемы с перенаправлением каждого второго посещения порта 80 на порт 443. Например, http://login.example.com/ -> https://login.example.com/

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

upstream app_server {
  server unix:/tmp/unicorn.mydomain.sock fail_timeout=0;
}

server {
  server_name ~^www\..*\.mydomain.com$;
  rewrite ^(.*) http://mydomain.com$1 permanent;
}

server {
  listen 80 deferred;
  listen 443 default ssl;

  server_name .mydomain.com;

  # Config for app directories, SSL certs, logs etc.
}

Спасибо заранее!

После небольшого количества проб и ошибок (с некоторой помощью nginx -t чтобы убедиться, что я ничего не сломал) Наконец-то я получил эту конфигурацию:

upstream app_server {
  server unix:/tmp/unicorn.mydomain.sock fail_timeout=0;
}

server {
  server_name ~^www\..*\.mydomain.com$;
  rewrite ^(.*) http://mydomain.com$1 permanent;
}

server {
  listen 80;

  server_name .mydomain.com;

  rewrite ^ https://$host$request_uri? permanent;
}

server {
  listen 443 default ssl;

  server_name .mydomain.com;

  # Config for app directories, SSL certs, logs etc.
}