Nginx 配置二级目录并不像 apache 那么简单,但二级目录的配置在实际工作中又经常用到,现整理如下。欢迎大家访问 二愣的闲谈杂鱼

在 /etc/nginx 目录下创建文件夹 sublocations,用于存放所有二级目录的配置:
sudo mkdir -p /etc/nginx/sublocations
在该目录下配置二级目录配置文件(如你想配置的二级目录为 example.com/bbs):
# /etc/nginx/sublocations/bbs.conf

location ^~ /bbs {
alias "/your/bbs/project/path";
index index.php;

try_files $uri $uri/ @bbs;

# 引入解析配置
include snippets/php_parse_for_sublocation.conf;
}

location @bbs {
rewrite /bbs/(.*)$ /bbs/index.php?/$1 last;
}
配置针对二级目录的解析文件,不同的语言可配置不同的 CGI 解析,下面是 PHP 的解析配置:
# /etc/nginx/snippets/php_parse_for_sublocation.conf

# pass PHP scripts to FastCGI server
location ~ \.php$ {
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;

# 注意这里的 SCRIPT_FILENAME
fastcgi_param SCRIPT_FILENAME $request_filename;

fastcgi_intercept_errors off;
fastcgi_buffer_size 16k;
fastcgi_buffers 4 16k;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
}
最后在域名配置中引入二级目录配置即可
server {
# ....

server_name example.com;

location / {
try_files $uri $uri/ 404;
}

# 引入二级目录配置
include sublocations/tianyou.conf;

# ....
}
Copy
测试配置成功并重启服务后,就能通过二级目录 example.com/bbs 访问到对应的服务了。

sudo nginx -t # 测试配置是否成功
sudo nginx -s reload # 重启服务

————————————————
原文作者:godruoyi
转自链接:https://learnku.com/articles/29297
版权声明:著作权归作者所有。商业转载请联系作者获得授权,非商业转载请保留以上作者信息和原文链接。

发表评论

邮箱地址不会被公开。 必填项已用*标注