Nginx配置PHP运行环境

Nginx 阅读: 225

nginx和php都安装好了,那么怎么让nginx处理请求时转给php去处理呢,今天来学学如何nginx配置php。

配置 PHP

    # 配置PHP
    location ~ \.php/?.*$ {
        # 设置php-cgi
        fastcgi_pass 127.0.0.1:9000;
        # Linux用下行代替上行可以提升性能
        # fastcgi_pass  unix:/tmp/php-cgi.sock;

        # 该指令设置的文件名会被附加到URI的前面,并且中间添加一个'/'
        # 值保存于$fastcgi_script_name
        fastcgi_index index.php;

        # 加载PHP环境参数,这些参数会被php的超全局数组$_SERVER获取
        include fastcgi_params;

        fastcgi_param   SCRIPT_FILENAME    $document_root$fastcgi_script_name;
        fastcgi_param   SCRIPT_NAME        $fastcgi_script_name;
    }

配置 PATH_INFO

    # 配置PHP
    location ~ \.php/?.*$ {
        # 设置php-cgi
        fastcgi_pass 127.0.0.1:9000;
        # Linux用下行代替上行可以提升性能
        # fastcgi_pass  unix:/tmp/php-cgi.sock;

        # 该指令设置的文件名会被附加到URI的前面,并且中间添加一个'/'
        # 值保存于$fastcgi_script_name
        fastcgi_index index.php;

        # 加载PHP环境参数,这些参数会被php的超全局数组$_SERVER获取
        include fastcgi_params;

        # 配置pathinfo
        set $fastcgi_script_name2 $fastcgi_script_name;
        if ($fastcgi_script_name ~ "^(.+\.php)(/.+)$") {
            set $fastcgi_script_name2 $1;
            set $path_info $2;
        }
        fastcgi_param   PATH_INFO         $path_info;
        fastcgi_param   SCRIPT_FILENAME   $document_root$fastcgi_script_name2;
        fastcgi_param   SCRIPT_NAME       $fastcgi_script_name2;
    }

配置单一入口

    # 配置单一入口
    location / {
        if (!-e $request_filename) {
            rewrite ^/(.*)$ /index.php/$1 last;
            break;
        }
    }

Nginx 配置 PHP 模板

把上面的结合在一起就可以配置一个完整的php执行环境了。
如果需要单一入口,删掉下面的38~43行前面得注释符#即可。

server {
    # 监听端口
    listen       80;
    # 监听地址或域名,多个之间用空格隔开
    server_name  localhost;

    # 网站根目录
    root  /web/path;
    # 默认页
    index index.php index.html;

    # 配置PHP
    location ~ \.php/?.*$ {
        # 设置php-cgi
        fastcgi_pass 127.0.0.1:9000;
        # Linux用下行代替上行可以提升性能
        # fastcgi_pass  unix:/tmp/php-cgi.sock;

        # 该指令设置的文件名会被附加到URI的前面,并且中间添加一个'/'
        # 值保存于$fastcgi_script_name
        fastcgi_index index.php;

        # 加载PHP环境参数,这些参数会被php的超全局数组$_SERVER获取
        include fastcgi_params;

        # 配置pathinfo
        set $fastcgi_script_name2 $fastcgi_script_name;
        if ($fastcgi_script_name ~ "^(.+\.php)(/.+)$") {
            set $fastcgi_script_name2 $1;
            set $path_info $2;
        }
        fastcgi_param   PATH_INFO         $path_info;
        fastcgi_param   SCRIPT_FILENAME   $document_root$fastcgi_script_name2;
        fastcgi_param   SCRIPT_NAME       $fastcgi_script_name2;
    }

    # 配置单一入口
    #location / {
    #    if (!-e $request_filename) {
    #       rewrite ^/(.*)$ /index.php/$1 last;
    #       break;
    #    }
    #}

    # 设置图片缓存时间
    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|ico)$ {
        expires  30d;  # 有效期30天
    }

    # 设置js和css缓存时间
    location ~ .*\.(js|css)?$ {
        expires  12h;  # 有效期12小时
    }

    # 允许访问.well-known目录(用于https)
    location ~ /.well-known {
        allow  all;
    }

    # 禁止访问其他隐藏文件(夹)
    location ~ /\.{
        deny  all;
    }

    # 设置访问日志文件
    access_log  logs/localhost.access.log;
    # 设置错误日志文件
    error_log  logs/localhost.error.log;
}

版权声明:本文为博主原创文章,转载需注明来自: 洛洛の空间