gpt4 book ai didi

redirect - 内部重定向时 Nginx 重写或内部重定向循环

转载 作者:行者123 更新时间:2023-12-01 12:28:21 24 4
gpt4 key购买 nike

我在使用 nginx 时遇到了问题。

这是我的配置。

server {
listen 80;
listen [::]:80;
server_name www.test.local;
return 301 http://test.local$request_uri;
}
server {
server_name test.local;
root /usr/share/nginx/test/htdocs/web;

# error_log /var/log/nginx/test.error.log;
# access_log /var/log/nginx/test.access.log;

rewrite ^/app\.php/?(.*)$ /$1 permanent;

location / {
index app.php;
try_files $uri @rewriteapp;
}

location @rewriteapp {
rewrite ^(.*)$ /app.php/$1 last;
}

location ~ ^/app\.php(/|$) {
fastcgi_pass 172.17.0.1:48000;
fastcgi_split_path_info ^(.+\.php)(/.*)$;

include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $realpath_root;
internal;
}

location /uploads/ {
root /usr/share/nginx/test/htdocs/web/uploads;
try_files $uri $uri/;
access_log off;
expires 30d;
}

location /images/ {
root /usr/share/nginx/test/htdocs/web/images;
try_files $uri $uri/;
access_log off;
expires 30d;
}

location /css/ {
root /usr/share/nginx/test/htdocs/web/css;
try_files $uri $uri/;
access_log off;
expires 30d;
}

location /js/ {
root /usr/share/nginx/test/htdocs/web/js;
try_files $uri $uri/;
access_log off;
expires 30d;
}

location /fonts/ {
root /usr/share/nginx/test/htdocs/web/fonts;
try_files $uri $uri/;
access_log off;
expires 30d;
}

location = /favicon.ico {
return 204;
access_log off;
log_not_found off;
}
}

我希望我的位置为 http://test.local/css/链接到/usr/share/nginx/test/htdocs/styles/就像我在我的配置中所做的那样。

但是当我输入例如 http://test.local/css/flow.css 时我收到下一个错误:

2016/05/13 15:55:30 [error] 5#5: *64 rewrite or internal redirection cycle while internally redirecting to "/css/flow.css///////////", client: 192.168.99.1, server: test.local, request: "GET /css/flow.css HTTP/1.1", host: "test.local", referrer: "http://test.local/"

这里有什么问题?

最佳答案

您的配置有两个问题。

第一个问题是你的root指令错误,所以找不到文件。

第二个问题是默认操作是在 URI 的末尾添加另一个 /

您需要向您的 try_files 指令添加一个有效的默认操作,例如 404 响应:

try_files $uri $uri/ =404;

那么,回到第一个问题。您的配置表明 /css/example.css 位于 /usr/share/nginx/test/htdocs/web/css/css/example.css。请注意,/css/ 已被复制。 /images//js//fonts/ 也是如此。参见 this document root 指令的详细信息。

在大多数配置中,在 server block 级别指定 root 并允许它被几乎所有 location 继承就足够了 block ,而不是在每个位置重复它。

您的问题指出 /css/ 文件应该在 /usr/share/nginx/test/htdocs/styles/ 中找到。这需要一个 alias 指令。参见 this document有关 alias 指令的详细信息。例如:

location /css/ {
alias /usr/share/nginx/test/htdocs/styles/;
access_log off;
expires 30d;
}

关于redirect - 内部重定向时 Nginx 重写或内部重定向循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37214921/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com