nginx-php7配置详解

nginx配置php7详解

​ 掌握nginx配置是一个phper的基本要求,我一直对nginx的配置不求甚解,解决php7和nginx的配置时也是懵懵懂懂的感觉,又是一个因为麻烦而不愿意去深究的问题。这次特地写个博客记录一下。

​ 首先先贴一段代码:

server
{
        listen 80;
        server_name local.med;
        root /var/www/med;
        index index.html index.htm index.php;
        location /api
        {
            set $root_path /var/www/med/server/public;
            try_files $uri $uri/ index.html /index.php?$query_string;
        }
        location ~ [^/]\.php(/|$)
        {
            fastcgi_pass unix:/run/php/php7.0-fpm.sock;
            fastcgi_index index.php;
            fastcgi_param  SCRIPT_FILENAME  $root_path$fastcgi_script_name;
            include fastcgi_params;
        }

}

这是我在ubuntu下nginx的一个配置文件的配置,接下来我基于关键字分析这段代码:

  • server

    这是nginx用于设置站点的代码块,所有的站点配置都应该包括在server{}块中

  • listen

    这是nginx用于设置监听端口的关键字,listen 80代表监听80端口,也可以选择其他空闲端口。有时候谷歌浏览器或者什么应用占用了80端口就需要用到这个关键字。

  • server_name

    这个关键字比较重要,用于发布网站。emmmm,假设你有一个www.baidu.com的已经备案的域名,那么填在这里是正确的选择。这样子用户就不用去记忆你的网站IP(鬼才会去记)。当然,本地设置虚拟域名也是没问题的,上面代码展示的local.med就是我本地的域名,只需要在hosts添加对应解析即可。像我这样,只需要在浏览器中输入local.med就可以访问我的项目,方便的很。所以这个关键字后面应该填写你的域名。

  • index

    这个用于设置 网站根目录的“入口文件”格式,如果设置了比如index index.html index.htm index.php那么nginx就知道要去解析这三类文件,如果没有设置nginx是认不出来这类文件的。

  • try_files(php伪静态实现的方法)

    在nginx的官网上,try_files的意思是“基于root路径和发起的URL尝试寻找文件”。比如说假设我的一个请求http://local.med/api/auth/login,root路径在上面设置好了是/var/www/med,那么根据我的请求http://local.med/api/auth/login,此时的$uriapi/auth/login。那么根据try_files的语法,它先会去找/var/www/med/api/auth/login这个文件,没找到(这是肯定的,因为这是个伪静态的URL),那么它会去找/var/www/med/api/auth/login/这个目录,也没有,再找index.html,显然也是没有的。然后它走进最后一个参数,就是nginx内部发起一个index.php?query_string的请求,最后这个请求会被下面的php的location块所解析。简而言之,就是try_files最后一个参数之前的参数都在找文件,最后一个参数则是nginx的一个内部重定向。

  • location

    这个关键字经常使用,所以非常重要。代码中的location /api代表着一种匹配规则,像http://local.med/api或者是http://local.med/test/api这种请求最后都会匹配到location /api这个块中进行处理。在上面的代码中,匹配到/api的规则后立刻先设置(set)一个变量$root_path,再使用try_files关键字进行处理。也就是说,location块实际的作用就是匹配URL路径,再用块内语句对该URL进行处理而已

-

你可能感兴趣的:(nginx)