Nginx+PHP-fpm伪静态配置方法。

2017-12-22 18:22:18 查看 1290 回复 0

TP在nginx下的伪静态配置,还是有点坑的。终于配出了完美的配方,在此跟大家共享下。

    server {
        listen 80;
        #所有文件放到/var/www/html/xxx目录,而index.php入口文件,及其他静态文件放到/var/www/html/xxx/Html
        #这样可以确保其他类文件不会被访问到。
        root /var/www/html/xxx/Html;
        index index.php index.html index.htm;
        server_name www.xxx.com xxx.com;

location ~* ^.+.(jpg|jpeg|gif|css|png|js|ico|xml)$ {
        access_log  off;
        expires 1d;
    }

        location / {
            #第二个 $uri/ 代表如果访问不到文件,那可以尝试访问目录。(会自动查找目录内的index文件)
            #如果写成/index.php?s=$uri 也可以,但是会导致 /Home/Index/Show?id=1的id参数获取不到。
            #$query_string漏了也会导致上一行的问题
            try_files $uri $uri/ /index.php$uri?$query_string;
        }

        #如果写成location ~ \.php$ { 的形式,会导致/index.php/Home/Index/Show这种路径识别成目录,然后目录不存在,又重新定向到index的死循环。
        #一定要写成如下 php($|/) 的形式。
       location ~ \.php($|/) {
	
		include snippets/fastcgi-php.conf;
	#
	#	# With php-fpm (or other unix sockets):
		fastcgi_pass unix:/dev/shm/php7.0-fpm.sock;
	#	# With php-cgi (or other tcp sockets):
	#	fastcgi_pass 127.0.0.1:9000;
	}
    }