我一直将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;
}
任何帮助都会很棒。
答案 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配置的教程,所以我将不做进一步的详细介绍。希望这可以帮助您解决眼前的问题。 :)