2018年6月

注意:本文基于lnmp一键安装包安装Nginx环境

进入Nginx配置文件夹

cd /usr/local/nginx/conf/vhost/

如果不是通过lnmp一键安装包安装的Nginx环境请自行搜索配置文件夹位置。

备份配置文件

cp ./你的网站.conf ./你的网站.conf.bak

修改配置文件

nano ./你的网站.conf

server
    {
        listen 80;
        …………
    }

中的内容全部删去,并添入以下信息:

server
    {
        listen 80;
        #listen [::]:80;
        server_name 你的网站 ;
        rewrite ^(.*)$  https://$host$1 permanent;
    }

Ctrl+x,回车,选择y,保存退出
如果在第一步中提示nano不存在,可使用

sudo apt-get install nano 

sudo yum install nano 

安装nano程序。

重启lnmp一键安装包环境

lnmp restart

如果不是通过lnmp一键安装包安装的Nginx环境可以通过重启服务器方式来刷新nginx的配置规则。

这是nginx的设置时没有注意支持pathinfo导致的,具体关于php pathinfo的信息可以在网上搜索到。
以下是该问题的解决方案

使用lnmp一键安装包安装的 Nginx

进入Nginx配置文件夹

cd /usr/local/nginx/conf/

备份 enable-php.conf 文件

cp ./enable-php.conf ./enable-php.conf.bak

修改 enable-php.conf 文件

nano ./enable-php.conf

在结尾大括号前添加如下内容:

include pathinfo.conf;

修改后文件内容为:

    location ~ [^/]\.php(/|$)
    {
        #try_files $uri =404;
        fastcgi_pass  unix:/tmp/php-cgi.sock;
        fastcgi_index index.php;
        include fastcgi.conf;
        include pathinfo.conf;
    }

如果提示nano命令不存在,可使用

sudo apt-get install nano

sudo yum install nano

安装nano程序

重启lnmp环境

lnmp restart

自行安装的Nginx

参考资料:服务器环境配置 - Typecho Docs

一般的出现这种情况时,nginx.conf里的的location设置都是类似这样

location ~ .*\.php$

要支持pathinfo,要改成

location ~ .*\.php(\/.*)*$

然后在location里加上

            set $path_info "";
            set $real_script_name $fastcgi_script_name;
            if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$") {
                    set $real_script_name $1;
                    set $path_info $2;
            }
            fastcgi_param SCRIPT_FILENAME $document_root$real_script_name;
            fastcgi_param SCRIPT_NAME $real_script_name;
            fastcgi_param PATH_INFO $path_info;

在某些老版本的php里面,可能还要打开php.ini里的cgi.fix_pathinfo

cgi.fix_pathinfo = 1

设置完之后重启服务器