Nginx多location实现多个静态资源的访问

摘要:最近在自己的云服务器上部署了前端项目(原来已部署一个项目),这就需要通过Server块的配置,实现多个项目位于同一台服务器,记录下配置方法如下

        由于之前在服务器上放了个静态页面,占用了通用的匹配规则,再增加其他内容需处理多了location的匹配规则。

1. Nginx的配置文件结构

        先复习下Nginx的配置文件结构分如下三部分全局块、events块、http块。

user nginx;
worker_processes auto;  ## 全局块

events {    ## events块
    worker_connections 1024;
}

http {      ## http块
    include mime.types;  ## http全局块
    default_type application/octet-stream;
    
    server {             ## server块
        listen 80;
        server_name example.com;
        
        location / {
            root /usr/share/nginx/html;
            index index.html;
        }
    }
}
  • user nginx:指定 Nginx 运行的用户和用户组。
  • worker_processes auto:设定 Nginx 使用多少个 worker 进程来处理请求,使用auto表示根据 CPU 核心数动态设置。
  • events { ... }:配置事件处理模型,包括连接数等参数。
  • http { ... }:配置 HTTP 服务的全局设置。
    • include mime.types:引入 MIME 类型配置文件。
    • default_type application/octet-stream:默认的 MIME 类型。
    • server { ... }:定义一个虚拟主机。
      • listen 80:监听端口。
      • server_name example.com:指定域名。
      • location / { ... }:定义 URI 匹配规则和对应的处理逻辑。
        • root /usr/share/nginx/html:指定根目录。
        • index index.html:默认首页文件。

        此处需要配置的是server块中的location,它是Nginx中的块级指令(block directive),location指令的功能是用来匹配不同的url请求,进而对请求做不同的处理和响应。

2. location的匹配规则

        从上可以看出实现多个静态资源的访问,需要修改server中location的配置,按照一定的规则匹配不同的资源。location的匹配规则如下:

模式含义
location = /url= 表示精准匹配,只有内容同表达式完全一致才会匹配成功。
location = /abc/ { ...}
#只匹配http://abc.com/abc
#http://abc.com/abc [匹配成功]
#http://abc.com/abc/index [匹配失败]
location ^~ /url^~ 开头对URL路径进行前缀匹配,并且在正则之前
location ^~ /index/ {.....}
#以 /index/ 开头的请求,都会匹配上
#http://abc.com/index/index.page [匹配成功]
#http://abc.com/error/error.page [匹配失败]
location ~ pattern表示区分大小写的正则匹配
location ~ /Abc/ {.....}
#http://abc.com/Abc/ [匹配成功]
#http://abc.com/abc/ [匹配失败]
location ~* pattern表示不区分大小写的正则匹配
location ~* /Abc/ {.....}
# 则会忽略 uri 部分的大小写
#http://abc.com/Abc/ [匹配成功]
#http://abc.com/abc/ [匹配成功]
location /url不带任何修饰符,也表示前缀匹配,但是在正则匹配之后
location /index/ {......}
#http://abc.com/index [匹配成功]
#http://abc.com/index/index.page [匹配成功]
#http://abc.com/test/index [匹配失败]
#http://abc.com/Index [匹配失败] 
location /通用匹配,任何未匹配到其他location的请求都会匹配到,兜底的相当于switch中的default。

nginx 基础配置:多个location转发任意请求或访问静态资源文件_nginx 前端转发指向不同的静态资源-CSDN博客文章浏览阅读3.4w次,点赞4次,收藏10次。server { #监听的端口 listen 80; #监听的域名 server_name localhost; #监听带后缀的url location ^~\.txt { #文件放到/html文件夹下 root /; }..._nginx 前端转发指向不同的静态资源https://blog.csdn.net/tutian2000/article/details/81531513icon-default.png?t=N7T8https://blog.csdn.net/tutian2000/article/details/81531513

          最终,location添加多个,但是要相互之间不要冲突,否则会请求超时。nginx配置文件修改如下:


user  nginx;
worker_processes  auto;

error_log  /var/log/nginx/error.log notice;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;
    **server {
      listen 80; # 监听端口
      server_name your_domain.com; # 域名或者服务器 IP

      location /daohang {
        alias /usr/share/nginx/html2; # 静态资源文件目录
        index index.html; # 默认首页文件
      }
      location / {
        root /data/wwwroot/mallv/; # 慕慕生鲜用户
        index index.html index.htm; # 默认首页文件
      }
      location /admin {
        alias /data/wwwroot/admin/; # 慕慕生鲜管理员
        index index.html index.htm; # 默认首页文件
      }
    }**
    include /etc/nginx/conf.d/*.conf;
}

  • 28
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值