nginx静态文件访问

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ocean20/article/details/80738798

如何配置nginx,访问服务器上的静态文件?

假设:在/home/www/jsonfolder下有一个data.json文件,内容如下:

{
    "action":"query",
    "name":"device1",
    "key":"temp"
}

1、修改nginx配置文件,文件路径/etc/nginx/sites-available/default(或者/etc/nginx/conf.d/xxx.conf,多应用时可能需要配置这个文件),分为两种方式:

  • 按目录匹配
    server块内添加如下内容:
server {
    .
    .
    location ^~ /jsonfolder/ {
        root /home/www/;
    }
    .
    .
}

配置完后重启nginx,重启方法请参见我之前的博客,此时访问http://127.0.0.1/jsonfolder/data.json 将会匹配到/home/www/jsonfolder/data.json文件。
如果采用post方式将无法正确返回,需要修改nginx的源码src/http/modules/ngx_http_static_module.c,
注释掉如下内容:

if (r->method & NGX_HTTP_POST) {
    return NGX_HTTP_NOT_ALLOWED;
}

执行make命令重新编译,执行cp objs/nginx /usr/local/nginx/sbin/nginx,将objs目录下生成nginx命令拷贝到nginx安装目录sbin目录下,重启即可。(此方法未验证)

  • 按文件后缀匹配
server {
    .
    .
    location ~ \.(txt|json)$ {
        root /home/www/;
    }
    .
    .
}

匹配文件后缀为txt和json的文件,例如http://127.0.0.1/data.json 会匹配到 /home/www/data.json

如果以上方法未成功,可尝试以下方法:
  

通过nginx访问静态文件配置,均是在server模块中配置,有两种方式:

1、alias

通过alias关键字,重定义路径,如

server{
listen 7001;
server_name 127.0.0.1;
location /file/ {
alias /home/china/areas/;
}
}

此时,通过浏览器访问http://127.0.0.1:7001/file/t.txt,则访问服务器的文件是/home/china/areas/t.txt

2、root

通过root关键字,重定义路径,如

server{
listen 7002;
server_name 127.0.0.1;
location / {
root /home/china/areas/;
}
}

此时,通过浏览器访问http://127.0.0.1:7001/t.txt,则访问服务器的文件是/home/china/areas/t.txt

上述两种方法均可达到目的,区别是它们对路径的解析方式不同,alas会把指定路径当作文件路径,

而root会把指定路径接到文件路径,再进行访问。

猜你喜欢

转载自blog.csdn.net/ocean20/article/details/80738798