加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营中心 > Nginx > 正文

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

发布时间:2020-12-13 20:59:15 所属栏目:Nginx 来源:网络整理
导读:我在使用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时遇到了麻烦.

这是我的配置.

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

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.

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

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读