cents+nginx配置thinkphp站点
上文记录了centos下安装php8.2的方法,本文记录如何配置thinkphp站点
1、进入nginx站点配置文件目录,一般是conf.d,或者web.conf,具体可以看nginx.conf里包含的文件夹
2、新建配置文件tp.conf,键入参考内容
# /etc/nginx/conf.d/tp.conf
server {
listen 9080;
server_name 127.0.0.1; # ← 改成你的域名
root /home/www/tp/public; # ← 改成 tp/public 绝对路径
index index.php;
# 日志(可选),如果目录不存在就新建
access_log /var/log/nginx/tp.access.log;
error_log /var/log/nginx/tp.error.log;
# 1. 隐藏 index.php 并支持 PATH_INFO
location / {
try_files $uri $uri/ /index.php$is_args$query_string;
}
# 2. 处理 PHP
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass 127.0.0.1:9000; # ← PHP-FPM 监听地址
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
# 3. 禁止访问敏感目录
location ~* /\.(env|git|svn) { deny all; }
location ~* ^/(runtime|upload|vendor)/.*\.php$ { return 403; }
# 4. 静态资源缓存(可选)
location ~* \.(js|css|png|jpg|gif|ico|svg|woff|woff2)$ {
expires 30d;
add_header Cache-Control "public";
}
}
保存并退出
2、上传thinkphp文件到目录/home/www/tp
3、重载nginx配置:nginx -t && nginx -s reload
4、访问:curl http://127.0.0.1
问题集合
查看站点错误日志:
tail -n 50 /var/log/nginx/tp.error.log
A、报错file not found,
确认tp目录正确,授予目录权限:chown -R nobody:nobody /home/www/tp
这里nobody是nginx的启动用户/组
# runtime 目录必须可写
chmod -R 775 /home/www/tp/runtime
# 如果有上传目录
chmod -R 775 /home/www/tp/public/upload
--------------------
SELinux(若开启)
# 给目录打 httpd 可读标签
chcon -R -t httpd_sys_content_t /home/www/tp
# 给可写目录额外标签
chcon -R -t httpd_sys_rw_content_t /home/www/tp/runtime
chcon -R -t httpd_sys_rw_content_t /home/www/tp/public/upload
4、重载服务
systemctl reload php-fpm
systemctl reload nginx
5、打开端口宿机访问,我是在虚拟机下操作的,所以要打开虚拟机防火墙端口
firewall-cmd --permanent --add-port=9080/tcp
firewall-cmd --reload