php rewrite 404 not found,在 Docker 容器中,Nginx PHP 环境中响应 404 Not Found 的分析与解决...

1、在 Docker 容器中,Nginx PHP 环境中响应 404 Not Found,打开一个映射至 PHP 文件的路由,如图1

php rewrite 404 not found,在 Docker 容器中,Nginx PHP 环境中响应 404 Not Found 的分析与解决..._第1张图片

图1

404 Not Found

404 Not Found


nginx

2、打开一个映射至 HTML 文件的路由,响应 200,如图2

php rewrite 404 not found,在 Docker 容器中,Nginx PHP 环境中响应 404 Not Found 的分析与解决..._第2张图片

图2

3、Nginx 的配置文件,内容如下

server {

listen 80; ## listen for ipv4

server_name api.pcs.wjdev.chinamcloud.cn;

charset utf-8;

root /mcloud/www/pcs-api/api/web;

index index.php;

location / {

# 如果找不到真实存在的文件,把请求分发至 index.php

try_files $uri $uri/ /index.php$is_args$args;

}

location / {

rewrite /interace /abc;

}

location /abc {

return 200 '{"msg":"success"}';

}

# uncomment to avoid processing of calls to non-existing static files by Yii

#location ~ \.(js|css|png|jpg|gif|swf|ico|pdf|mov|fla|zip|rar)$ {

# try_files $uri =404;

#}

#error_page 404 /404.html;

# deny accessing php files for the /assets directory

location ~ ^/assets/.*\.php$ {

deny all;

}

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000

#

location ~ \.php$ {

fastcgi_pass 127.0.0.1:9000;

fastcgi_index index.php;

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

include fastcgi_params;

}

# deny access to .htaccess files, if Apache's document root

# concurs with nginx's one

#

location ~* /\. {

deny all;

}

location /nginx_status {

stub_status on;

access_log off;

allow 127.0.0.1;

deny all;

}

location ~ ^/(status|ping)$ {

include fastcgi_params;

fastcgi_pass 127.0.0.1:9000;

fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;

access_log off;

allow 127.0.0.1;

allow 10.42.0.0/16;

allow 10.244.0.0/8;

allow 192.168.0.0/8;

allow 172.17.0.0/8;

deny all;

}

}

4、发现配置文件中存在重复的内容(location / { }),进而导致第一个配置项被覆盖,决定删除掉第二个配置项

location / {

rewrite /interace /abc;

}

location /abc {

return 200 '{"msg":"success"}';

}

server {

listen 80; ## listen for ipv4

server_name api.pcs.wjdev.chinamcloud.cn;

charset utf-8;

root /mcloud/www/pcs-api/api/web;

index index.php;

location / {

# 如果找不到真实存在的文件,把请求分发至 index.php

try_files $uri $uri/ /index.php$is_args$args;

}

# uncomment to avoid processing of calls to non-existing static files by Yii

#location ~ \.(js|css|png|jpg|gif|swf|ico|pdf|mov|fla|zip|rar)$ {

# try_files $uri =404;

#}

#error_page 404 /404.html;

# deny accessing php files for the /assets directory

location ~ ^/assets/.*\.php$ {

deny all;

}

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000

#

location ~ \.php$ {

fastcgi_pass 127.0.0.1:9000;

fastcgi_index index.php;

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

include fastcgi_params;

}

# deny access to .htaccess files, if Apache's document root

# concurs with nginx's one

#

location ~* /\. {

deny all;

}

location /nginx_status {

stub_status on;

access_log off;

allow 127.0.0.1;

deny all;

}

location ~ ^/(status|ping)$ {

include fastcgi_params;

fastcgi_pass 127.0.0.1:9000;

fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;

access_log off;

allow 127.0.0.1;

allow 10.42.0.0/16;

allow 10.244.0.0/8;

allow 192.168.0.0/8;

allow 172.17.0.0/8;

deny all;

}

5、打开一个映射至 PHP 文件的路由,响应 200,符合预期,如图3

php rewrite 404 not found,在 Docker 容器中,Nginx PHP 环境中响应 404 Not Found 的分析与解决..._第3张图片

图3

你可能感兴趣的:(php,rewrite,404,not,found)