V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
NGINX
NGINX Trac
3rd Party Modules
Security Advisories
CHANGES
OpenResty
ngx_lua
Tengine
在线学习资源
NGINX 开发从入门到精通
NGINX Modules
ngx_echo
tanteng
V2EX  ›  NGINX

对 Nginx 的配置的困惑

  •  
  •   tanteng ·
    tanteng · 2016-04-11 19:59:37 +08:00 · 3045 次点击
    这是一个创建于 3185 天前的主题,其中的信息可能已经有所发展或是发生改变。

    测试服务器上 Nginx 配置是:

    rewrite ^/bootstrap/(.*) /bootstrap/$1 break;
    rewrite ^(.*)$ /index.php?/$1 last;
    

    访问 www.example.com/bootstrap/demo.css 是可以的,并且 demo 文件位于 /misc.vip/bootstrap/demo.css

    但是本地 nginx 必须这样配置才能达到效果:

    rewrite ^/bootstrap/(.*) /misc.vip/bootstrap/$1 break;
    

    这是为什么??测试服务器并么有看到对 misc.vip 目录做了什么??

    另外, rewrite 的方式是否现在已经不建议了,使用 try_files 应该怎么写?

    不吝赐教!!

    第 1 条附言  ·  2016-04-12 10:11:43 +08:00
    http://dd.com/static/touchtemplate/4/

    现在的问题是这个无法访问,目录下有个 index.html ,访问提示 404

    static 路径有做 rewrite 到真实目录
    第 2 条附言  ·  2016-04-12 10:22:20 +08:00

    配置弄好了,这样就OK

    server {
        listen       80;
        server_name  admin.vip.xunlei.com;
        root   /usr/share/nginx/html/xl/admin.vip_center;
        index  index.php index.html index.htm;
    
    
        location / {
            #try_files $uri $uri/ /index.php?$args;
            rewrite ^(.*)$ /index.php?/$1 last;
        }
    
        location /static/ {
            root /usr/share/nginx/html/xl/admin.vip_center/misc.vip;
            index index.html
            try_files $uri /static/login.html;
        }
    
        location ~* \.(js|jpg|png|css|gif)$ {
            root /usr/share/nginx/html/xl/admin.vip_center/misc.vip;
            rewrite ^/css/(.*) /css/$1 break;
            rewrite ^/js/(.*) /js/$1 break;
            rewrite ^/images/(.*) /images/$1 break;
            rewrite ^/bootstrap/(.*) /bootstrap/$1 break;
        }
    ……
    
    

    测试服务器的nginx和本地虚拟机的nginx版本不同,测试服务器版本很老,所以直接把测试服务器nginx规则弄过来是不行的,要这样改一下。还是有的地方不明白,需要深入学习nginx的配置。

    第 3 条附言  ·  2016-04-12 10:25:07 +08:00
    附上测试服务器的 nginx 配置

    ```
    # 会员后台
    server {
    listen 80;
    server_name xxx.xxx.com;
    root /data/vhosts/admin.vip_center;
    index index.html index.php;

    rewrite ^/script/(.*) /script/$1 break;
    rewrite ^/auto/(.*) /auto/$1 break;
    rewrite ^/images/(.*) /images/$1 break;
    rewrite ^/css/(.*) /css/$1 break;
    rewrite ^/js/(.*) /js/$1 break;
    rewrite ^/static/(.*) /static/$1 break;
    rewrite ^/bootstrap/(.*) /bootstrap/$1 break;
    rewrite ^(.*)$ /index.php?/$1 last;

    location ~ \.php$ {
    fastcgi_pass backend;
    fastcgi_index index.php;
    fastcgi_connect_timeout 300;
    fastcgi_send_timeout 300;
    fastcgi_read_timeout 300;
    fastcgi_param SCRIPT_FILENAME /data/vhosts/admin.vip_center/$fastcgi_script_name;
    include fastcgi_params;
    }
    }
    ```
    3 条回复    2016-04-15 15:09:15 +08:00
    luckybird
        1
    luckybird  
       2016-04-12 08:34:34 +08:00
    静态文件不是经常单独用一个 location 匹配的吗?
    我习惯这样配置
    location ~* \.(gif|jpg|png|js|css)$ {
    root /usr/share/nginx/html/static;
    }
    z5864703
        2
    z5864703  
       2016-04-12 09:32:59 +08:00
    root 目录设置问题
    Jakesoft
        3
    Jakesoft  
       2016-04-15 15:09:15 +08:00
    我也遇到了相同的问题,但是我的只有路径后面不加 /才会有 301 跳转
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1143 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 23:10 · PVG 07:10 · LAX 15:10 · JFK 18:10
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.