nginx和php都安装好了,那么怎么让nginx处理请求时转给php去处理呢,今天来学学如何nginx配置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;
    }
    # 配置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;
        }
    }
或者用 try_files
    # 配置单一入口
    location / {
        try_files $uri $uri/ /index.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;
}
暂无评论,赶紧发表一下你的看法吧。