内容目录
公司需要使用禅道 所以搭建一个 但是中间遇到一个问题 就是api出现404 会导致app提示网址不正确
原因是因为api默认是伪静态的 格式是 /api.php/v1/* ,但是nginx 会将他视为文件夹 所以会404 解决办法我是修改的配置文件
添加下面内容
location ~ /www/api.php/* {
root 禅道目录;
fastcgi_pass 127.0.0.1:9000; # php-fpm 监听地址 我的是默认9000
fastcgi_index api.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
拙劣的解决办法,如果有更好的办法可以留言交流(毕竟我是一个前端开发 nginx 并没有懂太多
后续更新 完整的伪静态配置,推荐这个
server {
listen 443 ssl;
# Load configuration files for the default server block.\location
server_name servername;
# ssl证书地址
ssl_certificate path.pem; # pem文件的路径
ssl_certificate_key path.key; # key文件的路径
# ssl验证相关配置
ssl_session_timeout 5m; #缓存有效期
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; #加密算法
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #安全链接可选的加密协议
ssl_prefer_server_ciphers on; #使用服务器端的首选算法
root path;
index index.php;
if (!-d $request_filename){
set $rule_0 1$rule_0;
}
if (!-f $request_filename){
set $rule_0 2$rule_0;
}
if ($request_filename ~* "api.php"){
set $rule_0 3$rule_0;
}
if ($rule_0 = "21"){
rewrite /(.*)$ /index.php/$1 last;
}
if ($rule_0 = "31"){
rewrite /(.*)$ /api.php/$1 last;
}
location ~ [^/]\.php(/|$) {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
root /home/data/chandao/zentaopms;
try_files $uri =404;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
set $real_script_name $fastcgi_script_name;
if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$") {
set $real_script_name $1;
set $path_info $2;
}
fastcgi_param SCRIPT_FILENAME $document_root$real_script_name;
fastcgi_param SCRIPT_NAME $real_script_name;
fastcgi_param PATH_INFO $path_info;
}
}