内部重定向时,Nginx重写或内部重定向周期

前端之家收集整理的这篇文章主要介绍了内部重定向时,Nginx重写或内部重定向周期 前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我在使用Nginx时遇到了麻烦.

这是我的配置.

@H_404_7@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 im时,我得到了下一个错误

@H_404_7@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响应:

@H_404_7@try_files $uri $uri/ =404;

因此,回到第一个问题.您的配置指出/css/example.css位于/usr/share/Nginx/test/htdocs/web/css/css/example.css.请注意,/ css /已复制. / images /,/ js /和/ fonts /也是如此.有关根指令的详细信息,请参见this document.

在大多数配置中,只需在服务器块级别指定根并允许几乎所有位置块都可以继承它,而不必在每个位置重复它.

您的问题指出/ css /文件应该在/usr/share / Nginx / test / htdocs / styles /中找到.这需要别名指令.有关别名指令的详细信息,请参见this document.例如:

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

猜你在找的Nginx相关文章