Как избавиться от перенаправления при использовании NGINX - PullRequest
1 голос
/ 24 апреля 2019

Я всегда использовал Apache в качестве моего веб-сервера, но теперь я должен использовать NGINX по другим причинам.Теперь он работает на AWS Linux AMI.Я впервые играю вокруг, мне удалось настроить пустой конфиг, но когда я добавляю свои правила, я конвертирую из .htaccess, и я продолжаю перенаправлять сайт.Не уверен, что это мой конфиг или нет.Кроме того, я не уверен, если вам нужен отдельный для 443?

server {
  listen 80;
  server_name sitename.co.uk www.sitename.co.uk;
  root /var/www/html/Project;

  location / {
    try_files $uri $uri/ /index.php?$args;

    if (!-e $request_filename){
      rewrite ^/([^\.]+)$ /$1.php break;
    }
    if ($http_host ~* "^sitename\.co.uk"){
      rewrite ^(.*)$ https://sitename.co.uk/$1 redirect;
    }
    if (!-e $request_filename){
      rewrite ^(.*)$ /index.php break;
    }
    if (!-e $request_filename){
      rewrite ^(.*)$ /index.php break;
    }
  }

access_log /var/log/nginx/sitename.access.log;
error_log /var/log/nginx/sitename.co.uk.error.log;
}

Любая помощь будет здорово.

1 Ответ

1 голос
/ 24 апреля 2019

Вероятно, это связано с тем, что эта часть вызывает бесконечный цикл:

if ($http_host ~* "^sitename\.co.uk"){
  rewrite ^(.*)$ https://sitename.co.uk/$1 redirect;
}

Похоже, это могло быть для перенаправления http на https.Правильный способ добиться этого в nginx - использовать два отдельных серверных блока.Один слушает на 443 (https) и настроен с помощью ssl, а другой слушает на 80 (http) с содержимым, которое выглядит следующим образом:

server {
 listen 80;
 server_name sitename.co.uk www.sitename.co.uk;
 return 301 https://sitename.co.uk$request_uri;
}

В Интернете есть много учебных пособий по настройке nginx, поэтомуЯ не буду вдаваться в подробности.Надеюсь, это поможет решить ваши насущные проблемы.:)

...