nginx 静态目录配置规则,路径匹配与本地资源

简介: 经常配了nginx静态目录,死活访问不了,每次访问404.查看文档后,发现nginx配置静态目录使 用以下规则 假如nginx是在本机,静态目录也是在本机, 1、子目录匹配 如下配置  Java代码   location / {       root /data/www;   }   访问http://127.

经常配了nginx静态目录,死活访问不了,每次访问404.查看文档后,发现nginx配置静态目录使 
用以下规则 

假如nginx是在本机,静态目录也是在本机, 

1、子目录匹配 
如下配置 

Java代码   收藏代码
  1. location / {  
  2.     root /data/www;  
  3. }  



访问http://127.0.0.1/时,配匹配/data/www 
访问http://127.0.0.1/images时,配匹配/data/www/images 
访问http://127.0.0.1/images/1.jpg时,配匹配/data/www/images/1.jpg 
也就是说,地址栏里"/"后的路径是直接匹配目录data/www/下的路径 

而对于配置 

Java代码   收藏代码
  1. location /images/ {  
  2.     root /data/www;  
  3. }  


访问http://127.0.0.1/images时,配匹配/data/www/images 
也就是说,地址栏里/images,直接匹配了/data/www的子目录. 
经常出问题的是,location里的url随意配了一个名字,如/xxx,但是对应的/data/www目录 
下并没有该/data/www/xxx子目录,一访问就404
 

2、重复路径匹配规则 

对于如下配置: 

Java代码   收藏代码
  1. server {  
  2.     location / {  
  3.         root /data/www;  
  4.     }  
  5.   
  6.     location /images/ {  
  7.         root /data;  
  8.     }  
  9. }  



访问URL http://localhost/images/example.png,将会匹配第二个/images/规则, 
虽然也可以匹配location /规则,但nginx默认会选择最长前缀去匹配当前URL,也就是 
第二个配置会生效,访问/data/images/目录,而不是/data/www/images/目录 


Serving Static Content 


引用

Serving Static Content 

An important web server task is serving out files (such as images or static HTML pages). You will implement an example where, depending on the request, files will be served from different local directories: /data/www (which may contain HTML files) and /data/images (containing images). This will require editing of the configuration file and setting up of a server block inside the http block with two location blocks. 

First, create the /data/www directory and put an index.html file with any text content into it and create the /data/images directory and place some images in it. 

Next, open the configuration file. The default configuration file already includes several examples of the server block, mostly commented out. For now comment out all such blocks and start a new server block: 

    http { 
        server { 
        } 
    } 

Generally, the configuration file may include several server blocks distinguished by ports on which they listen to and by server names. Once nginx decides which server processes a request, it tests the URI specified in the request’s header against the parameters of the location directives defined inside the server block. 

Add the following location block to the server block: 

    location / { 
        root /data/www; 
    } 

This location block specifies the “/” prefix compared with the URI from the request. For matching requests, the URI will be added to the path specified in the root directive, that is, to /data/www, to form the path to the requested file on the local file system. If there are several matching location blocks nginx selects the one with the longest prefix. The location block above provides the shortest prefix, of length one, and so only if all other location blocks fail to provide a match, this block will be used. 

Next, add the second location block: 

    location /images/ { 
        root /data; 
    } 

It will be a match for requests starting with /images/ (location / also matches such requests, but has shorter prefix). 

The resulting configuration of the server block should look like this: 

    server { 
        location / { 
            root /data/www; 
        } 

        location /images/ { 
            root /data; 
        } 
    } 

This is already a working configuration of a server that listens on the standard port 80 and is accessible on the local machine at http://localhost/. In response to requests with URIs starting with /images/, the server will send files from the /data/images directory. For example, in response to the http://localhost/images/example.png request nginx will send the /data/images/example.png file. If such file does not exist, nginx will send a response indicating the 404 error. Requests with URIs not starting with /images/ will be mapped onto the /data/www directory. For example, in response to the http://localhost/some/example.html request nginx will send the /data/www/some/example.html file. 

To apply the new configuration, start nginx if it is not yet started or send the reload signal to the nginx’s master process, by executing: 

    nginx -s reload 

    In case something does not work as expected, you may try to find out the reason in access.log and error.log files in the directory /usr/local/nginx/logs or /var/log/nginx. 
目录
相关文章
|
4月前
|
应用服务中间件 Linux 网络安全
Centos 8.0中Nginx配置文件和https正书添加配置
这是一份Nginx配置文件,包含HTTP与HTTPS服务设置。主要功能如下:1) 将HTTP(80端口)请求重定向至HTTPS(443端口),增强安全性;2) 配置SSL证书,支持TLSv1.1至TLSv1.3协议;3) 使用uWSGI与后端应用通信(如Django);4) 静态文件托管路径设为`/root/code/static/`;5) 定制错误页面(404、50x)。适用于Web应用部署场景。
595 87
|
4月前
|
负载均衡 应用服务中间件 nginx
Nginx配置与命令
Nginx 是一款高性能的 HTTP 和反向代理服务器,其配置文件灵活且功能强大。本文介绍了 Nginx 配置的基础结构和常用指令,包括全局块、Events 块、HTTP 块及 Server 块的配置方法,以及静态资源服务、反向代理、负载均衡、HTTPS 和 URL 重写等功能实现。此外,还提供了常用的 Nginx 命令操作,如启动、停止、重载配置和日志管理等,帮助用户高效管理和优化服务器性能。
|
2月前
|
应用服务中间件 网络安全 nginx
配置Nginx以支持Websocket连接的方法。
通过上述配置,Nginx将能够理解WebSocket协议的特殊要求,代理Websocket流量到合适的后端服务器。注意,Websocket并不是HTTP,尽管它最初是通过HTTP请求启动的连接升级,因此保证Nginx了解并能够妥善处理这种升级流程是关键。
482 10
|
3月前
|
安全 应用服务中间件 网络安全
Nginx SSL/TLS协议栈中配置深度解析与实践指南-优雅草卓伊凡
Nginx SSL/TLS协议栈中配置深度解析与实践指南-优雅草卓伊凡
238 0
Nginx SSL/TLS协议栈中配置深度解析与实践指南-优雅草卓伊凡
|
3月前
|
JSON 前端开发 应用服务中间件
配置Nginx根据IP地址进行流量限制以及返回JSON格式数据的方案
最后,记得在任何生产环境部署之前,进行透彻测试以确保一切运转如预期。遵循这些战术,守卫你的网络城堡不再是难题。
184 3
|
6月前
|
应用服务中间件 nginx
Nginx进程配置指令详解
Nginx进程配置指令主要包括:`worker_processes`设置工作进程数;`worker_cpu_affinity`绑定CPU核心;`worker_rlimit_nofile`设置最大文件描述符数量;`worker_priority`设置进程优先级;`worker_connections`设置最大连接数;`daemon`控制守护进程模式;`master_process`启用主进程模式;`pid`设置PID文件路径;`user`指定用户和组;`error_log`配置错误日志。这些指令在`nginx.conf`中配置,用于优化和控制Nginx的运行行为。
278 10
|
7月前
|
应用服务中间件 PHP nginx
当你的nginx服务器和php服务器不在一起的时候,这个nginx 的root目录问题
两个服务器的网站代码目录需要对齐,docker容器里面也是一样
|
8月前
|
存储 应用服务中间件 Linux
nginx配置证书和私钥进行SSL通信验证
nginx配置证书和私钥进行SSL通信验证
379 4
|
10月前
|
缓存 应用服务中间件 网络安全
Nginx中配置HTTP2协议的方法
Nginx中配置HTTP2协议的方法
690 7
|
10月前
|
负载均衡 监控 应用服务中间件
配置Nginx反向代理时如何指定后端服务器的权重?
配置Nginx反向代理时如何指定后端服务器的权重?
453 61