Nginx配置位置

时间:2015-10-12 10:16:10

标签: nginx

我有以下Nginx配置文件......

bubbleDown

文件夹结构就是这样......

HTML \ APP1

HTML \共同

当我尝试浏览时...

http://localhost/>作品

http://localhsot/index.html>作品

http://localhost/common/somefile.txt>不起作用

我错过了什么?

3 个答案:

答案 0 :(得分:2)

您应该使用alias代替root

server {
  listen 80;
  server_name 127.0.0.1 localhost;

  location / {
    root /etc/nginx/html/app1;
    index index.html;
  }

  location /common {
    alias /etc/nginx/html/common;
  }
}

如果您在root中使用common127.0.0.1/common/somefile.txt会尝试/etc/nginx/html/common/common/somefile.txt(请注意两个common)。如果您查看nginx的日志,就可以看到它。

答案 1 :(得分:1)

我正在添加自己的答案,因为我终于开始工作了。将它发布在这里,这可能对其他人有帮助......

server {
listen 80;
server_name 127.0.0.1 localhost;
location = /index.html {
        root /etc/nginx/html/app1;
        index index.html;
}

location / {
        root /etc/nginx/html/app1;
        index index.html;
}

location ^~ /common/ {
        root /etc/nginx/html;
}
}

基本上,Nginx尝试的方式是/ etc / nginx / html / common / common。从root工作中删除公共。还发现http://localhost:8888/common/需要尾随/.

答案 2 :(得分:0)

因为它首先匹配location /。你可以这样做:

server {
    listen 80;
    server_name 127.0.0.1 localhost;
    location = /index.html {
            root /etc/nginx/html/app1;
            index index.html;
    }

    location / {
            root /etc/nginx/html/app1;
            index index.html;
    }

    location ^~ /common/ {
            root /etc/nginx/html/common;
    }
} 

修改 是啊。看起来有些复杂。你可以这样做:
首先,您需要创建一个新服务器:

server {
    listen 80;
    server_name common.com;   # A virtual host
    root /etc/nginx/html/common;
}

然后,您需要修改上面的配置,如下所示:

server {
    listen 80;
    server_name 127.0.0.1 localhost;
    location = /index.html {
            root /etc/nginx/html/app1;
            index index.html;
    }

    location / {
            root /etc/nginx/html/app1;
            index index.html;
    }

    location ^~ /common/ {
             rewrite ^/common(/.*)$  $1  break; # rewrite the /common/
             proxy_set_header Host common.com;  # it will requests common.com which the server of 127.0.0.1. then will match the above server.
             proxy_pass http://127.0.0.1;
    }
}