使用NGINX时如何摆脱重定向

时间:2019-04-24 11:40:40

标签: amazon-web-services web-services nginx nginx-config

我一直将Apache用作Web服务器,但是由于其他原因,我现在不得不使用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 个答案:

答案 0 :(得分:1)

这可能是由于此部分导致了无限循环:

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;
}

在Web上的其他地方,有很多关于Nginx配置的教程,所以我将不做进一步的详细介绍。希望这可以帮助您解决眼前的问题。 :)