内容目录
公司需要使用禅道 所以搭建一个 但是中间遇到一个问题 就是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; } }