常用nginx对于web项目配置整理,做个笔记。
php web项目配置
server {
listen 80;
listen [::]:80;
# 设置上传最大为5MB
client_max_body_size 5m;
root /srv/www/wechat/public;
index index.html index.php;
server_name example.com;
location / {
try_files $uri $uri/ =404;
}
# 支持php
location ~ \.php$ {
# Check that the PHP script exists before passing it
try_files $fastcgi_script_name =404;
fastcgi_index index.php;
include fastcgi.conf;
# With php-fpm (or other unix sockets):
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
# # With php-cgi (or other tcp sockets):
# fastcgi_pass 127.0.0.1:9000;
}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
location ~ /\.ht {
deny all;
}
}
php web项目配置 支持laravel、symfony、Yii2单入口
...
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
#try_files $uri $uri/ =404; # 注释上面这句,使用下面这句
try_files $uri $uri/ /index.php?$query_string;
}
...
php web项目配置 支持ThinkPHP
...
location ~ \.php$ {
# regex to split $uri to $fastcgi_script_name and $fastcgi_path
fastcgi_split_path_info ^(.+\.php)(/.+)$;
# Check that the PHP script exists before passing it
try_files $fastcgi_script_name =404;
# Bypass the fact that try_files resets $fastcgi_path_info
# see: http://trac.nginx.org/nginx/ticket/321
set $path_info $fastcgi_path_info;
fastcgi_param PATH_INFO $path_info; # ThinkPHP依赖PATH_INFO这个环境变量
fastcgi_index index.php;
include fastcgi.conf;
# With php-fpm (or other unix sockets):
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
# # With php-cgi (or other tcp sockets):
# fastcgi_pass 127.0.0.1:9000;
}
...
php web项目配置 禁止访问上传目录下的php文件
...
# 这个块location要放在 location ~ \.php$ 之前
location ~ ^/uploads/.*\.php$ { # 所有/uploads文件目录下的.php文件都被禁止访问
#deny all; # 返回403
return 404; #返回404
}
...
评论