nginx基础3——配置文件详解(实用功能篇)

2023-11-09

一、平滑升级

  • 平滑升级就是在不影响业务运行的情况下,可以对nginx新增模块功能。虽然有这样一个功能,但在实际生产中最好是一次性把所有需要的模块编译进去。
  • 这里演示如何新增一个echo模块。

1.紧接上文,查看nginx当前已编译的模块。
在这里插入图片描述
2.下载新模块,echo模块下载地址


3.解压nginx安装包,注意这里的安装包版本就是当前已安装的nginx版本的二进制包。

tar zxf nginx-1.24.0.tar.gz
cd nginx-1.24.0

4.开始编译新模块。

./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-debug \
--with-http_ssl_module \
--with-http_realip_module \
--with-http_image_filter_module \
--with-http_gunzip_module \
--with-http_gzip_static_module \
--with-http_stub_status_module \
--http-log-path=/var/log/nginx/access.log \
--error-log-path=/var/log/nginx/error.log \
--add-module=/root/echo-nginx-module-master    //也就是在第一次编译的所有参数后买你添加此行,指定新增模块的解压目录。

//使用make编译,编译后绝不能再执行make install。
make

5.备份原程序。

cp /usr/local/nginx/sbin/nginx{,-bck}

在这里插入图片描述
6.停止服务,使用新程序文件启动Nginx,最后查看已经编译的模块。

//停止服务。
nginx -s stop

//拷贝新程序替换原程序
cp /root/nginx-1.24.0/objs/nginx /usr/local/nginx/sbin/

//启动服务。
nginx

在这里插入图片描述
7.测试echo模块效果。修改配置文件后重启服务,访问url
在这里插入图片描述

二、修饰符

修饰符 功能
= 精确匹配
~ 正则表达式模式匹配,区分大小写
~* 正则表达式模式匹配,不区分大小写
^~ 前缀匹配,类似于无修饰符的行为,也是以指定模块开始,不同的是,如果模式匹配,那么就停止搜索其他模式了,不支持正则表达式
@ 定义命名location区段,这些区段客户端不能访问,只可以由内部产生的请求来访问,如try_files或error_page等

2.1 无修饰符效果

1.修改配置文件,重启服务。

http {
    server {
        listen  80;
        server_name  www.qingjun.com;
        location /qingjun {    //此时location没有添加修饰符,就光一个/qingjun
            echo 'hehe';
        }
    }
}  

2.此时能匹配qingjun并输出内容,如下几种情况。
在这里插入图片描述

2.2 精准匹配(=)

  • =,表示必须与指定的模式精确匹配。

1.修改配置文件,重启服务。

http {
    server {
        listen  80;
        server_name  www.qingjun.com;
        location =  /qingjun {    //在/qingjun前面添加修饰符 =
            echo 'hehe';
        }
    }
}

2.此时能匹配qingjun并输出内容,如以下几种情况。

在这里插入图片描述
3.以下几种情况不能匹配。

在这里插入图片描述

2.3 区分大小写匹配(~)

  • ~,表示指定的正则表达式要区分大小写

1.修改配置文件,重启服务。

http {
    server {
        listen  80;
        server_name  www.qingjun.com;
        location ~  /qingjun {
            echo 'hehe';
        }
    }
}

2.查看效果。

在这里插入图片描述

2.4 不区分大小写匹配(~*)

  • ~*,表示指定的正则表达式不区分大小写

1.修改配置文件,重启服务。

http {
    server {
        listen  80;
        server_name  www.qingjun.com;
        location ~*  /qingjun {
            echo 'hehe';
        }
    }
}

2.查看效果。

在这里插入图片描述

2.5 匹配优先级

优先级次序如下:

( location = 路径 ) --> ( location ^~ 路径 ) --> ( location ~ 正则 ) --> ( location ~* 正则 ) --> ( location 路径 )

1.当有=修饰符时,优先显示=修饰符下面的location内容。

在这里插入图片描述
2.正则表达式按照配置文件中定义的顺序匹配。

在这里插入图片描述
在这里插入图片描述

三、访问控制

  • 访问控制就是设置黑名单、白名单,允许哪些主机可以访问,哪些主机不能访问。
参数 释义 备注
allow 设定允许哪台或哪些主机访问,多个参数间用空格隔开。 可用于全局段、http段、server段、location段
deny 设定禁止哪台或哪些主机访问,多个参数间用空格隔开。 可用于全局段、http段、server段、location段

1.示例。

allow 192.168.1.1/32 172.16.0.0/16;
deny all;

2.设置IP白名单。

http {
    server {
        listen  80;
        server_name  www.qingjun.com;
        location ~  /qingjun {
            echo 'dsadjkalsdjlkaas';
            allow 192.168.161.132/32;    //只允许这台主机访问
            deny all;    //拒绝所有主机
        }
    }
}

在这里插入图片描述

3.设置IP黑名单。

http {
    deny 192.168.161.132/32;
    allow all;
    server {
        listen  80;
        server_name  www.qingjun.com;
        location ~  /qingjun {
            echo 'dsadjkalsdjlkaas';
        }
    }
}

在这里插入图片描述

四、用户认证

  • 让客户端访问时需要通过输入正确的账号密码后,才能访问到网页。
参数 释义 备注
auth_basic “欢迎信息”; 添加描述信息。 可用于全局段、http段、server段、location段
auth_basic_user_file “/path/to/user_auth_file” 指定加密文件路径。 可用于全局段、http段、server段、location段

1.生成加密文件,里面包含账户和密码。

yum -y install httpd-tools

//-m指定文件存放路径,一般就是如下这个地址,admin为自定义账户。
htpasswd -c -m /usr/local/nginx/.password admin

在这里插入图片描述
2.修改nginx配置文件,指定加密文件。

http {
    auth_basic "111";
    auth_basic_user_file '/usr/local/nginx/.password';
    server {
        listen  80;
        server_name  www.qingjun.com;
        location ~  /qingjun {
            echo 'dsadjkalsdjlkaas';
        }
    }
}

3.访问网页,查看效果。
在这里插入图片描述
在这里插入图片描述

五、配置https

1.自签CA证书。

//生成密钥。
mkdir /etc/pki/CA
cd /etc/pki/CA/
mkdir private
(umask 077;openssl genrsa -out private/cakey.pem 2048)
//提取公钥。
openssl rsa -in private/cakey.pem -pubout


//CA自签证书。
openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 365

//#读出cacert.pem证书内容
openssl x509 -text -in cacert.pem
mkdir certs newcerts crl
touch index.txt && echo 01 > serial

//客户端生成密钥。
cd /usr/local/nginx/
mkdir ssl
cd ssl/
(umask 077;openssl genrsa -out nginx.key 2048)


//客户端生成证书签署请求
openssl req -new -key nginx.key -days 365 -out nginx.csr

//客户端把证书签署请求文件发送给CA(这里不需要做这步骤,因为我们已经在当前目录了)
scp httpd.csr root@CA端IP:/root

//CA签署客户端提交上来的证书。
openssl ca -in ./nginx.csr -out nginx.crt -days 365

//删除过度文件。
rm -rf nginx.csr

在这里插入图片描述
2.修改nginx配置文件。

http {
    server {
        listen 443 ssl;       //修改端口号
        server_name  www.qingjun.com;   //域名要与证书里保持一致。
        ssl_certificate      ../ssl/nginx.crt;      //指定公钥
        ssl_certificate_key  ../ssl/nginx.key;     //指定私钥

        ssl_session_cache    shared:SSL:1m;    //取消注释
        ssl_session_timeout  5m;      //取消注释
        ssl_ciphers  HIGH:!aNULL:!MD5;     //取消注释
        ssl_prefer_server_ciphers  on;     //取消注释

        location ~  /qingjun {
            echo 'dsadjkalsdjlkaas';
        }
    }
}

3.重启服务,访问网页。

在这里插入图片描述

六、开启状态界面

  • 可以通过状态网页获取基本的流量信息。
  • 该参数由 --with-http_stub_status_module 模块提供,安装Nginx时需要加入该模块。
状态码 表示的意义
Active connections 2 当前所有处于打开状态的连接数
accepts 总共处理了多少个连接
handled 成功创建多少握手
requests 总共处理了多少个请求
Reading nginx读取到客户端的Header信息数,表示正处于接收请求状态的连接数
Writing nginx返回给客户端的Header信息数,表示请求已经接收完成,
且正处于处理请求或发送响应的过程中的连接数
Waiting 开启keep-alive的情况下,这个值等于active - (reading + writing),
意思就是Nginx已处理完正在等候下一次请求指令的驻留连接

1.修改配置文件。可以配合白名单来玩。

location /status {
  stub_status {on | off};
  allow 172.16.0.0/16;
  deny all;
}

2.重启服务,http://ip/status访问状态网页。
在这里插入图片描述

活动的连接数:1
服务接受的连接数:4
处理的个数:4
请求的个数:1
处于读的个数:0
处于写的个数:1
处于等待的个数:1

3.可以使用zabbix监控这个网页中的连接数。

[root@master conf]# curl -k https://192.168.161.129/status 
Active connections: 1 
server accepts handled requests
 6 6 2 
Reading: 0 Writing: 1 Waiting: 0 

//取第一行的数值即可。
curl -k https://192.168.161.129/status |awk 'NR==1{print $3}'
1

七、rewrite重写url

  • 把原来要访问的uri交给另外一个uri去寻找,是用来执行URL重定向。
  • 这个机制有利于去掉恶意访问的url,也有利于搜索引擎优化(SEO)
  • 语法:rewrite regex replacement flag;
  • 捕获子表达式,可以捕获放在()之间的任何文本,比如^(hello|sir)$ ,符串为“hi sir”捕获的结果$1=hi$2=sir
示例 释义
rewrite ^/images/(.*.jpg)$ /imgs/$1 break 表示访问images的uri时,交给imgs这个uri去寻找。
rewrite ^/img/(.*)$ http://www.idfsoft.com/index.html redirect 表示访问img这个uri时,交给http://www.idfsoft.com/index.html这个url寻找。
flag 作用
last 基本上都用这个flag,表示当前的匹配结束,继续下一个匹配,最多匹配10个到20个
一旦此rewrite规则重写完成后,就不再被后面其它的rewrite规则进行处理
而是由UserAgent重新对重写后的URL再一次发起请求,并从头开始执行类似的过程
break 中止Rewrite,不再继续匹配
一旦此rewrite规则重写完成后,由UserAgent对新的URL重新发起请求,
且不再会被当前location内的任何rewrite规则所检查
redirect 以临时重定向的HTTP状态302返回新的URL
permanent 以永久重定向的HTTP状态301返回新的URL
标识符 意义
^ 必须以^后的实体开头
$ 必须以$前的实体结尾
. 匹配任意字符
[] 匹配指定字符集内的任意字符
[^] 匹配任何不包括在指定字符集内的任意字符串
l 匹配 l之前或之后的实体
() 分组,组成一组用于匹配的实体,通常会有 l来协助

7.1 uri——>uri

1.正常访问图片效果。创建图片目录,上传一张图片,web访问。

mkdir /usr/local/nginx/html/img
[root@master img]# ll
-rw-r--r-- 1 root root 1476047 Jul 18 23:20 1.jpg

//修改配置文件。
vim /usr/local/nginx/conf/nginx.conf
http {
    server {
        listen 80;
        server_name  www.qingjun.com;
        location ~  /img {
            root /usr/local/nginx/html;
        }
    }
}

在这里插入图片描述

2.修改图片目录名,此时使用img路径就访问不到这个图片。

mv /usr/local/nginx/html/img /usr/local/nginx/html/qingjun

在这里插入图片描述
3.添加rewrite重写url规则,再次访问。

http {
    server {
        listen 80;
        server_name  www.qingjun.com;
        location ~  /img {
            root /usr/local/nginx/html;
            rewrite ^/img/(.*\.jpg)$ /qingjun/$1 break;    //img交给qingjun去找,$1等于括号里的内容。
        }
        location ~  /qingjun {        //指定图片正确存在的路径。
            root /usr/local/nginx/html;
        }
    }
}

在这里插入图片描述
4.若目标地址不在源地址的根下,则需要定义源地址的根。

//将图片地址移到其他位置。
mv /usr/local/nginx/html/qingjun /opt/

//修改配置文件。
http {
    server {
        listen 80;
        server_name  www.qingjun.com;
        location ~  /img {
            root /opt;         //也要改成图片正确位置的上一级目录。
            rewrite ^/img/(.*\.jpg)$ /qingjun/$1 break;
        }
        location ~  /qingjun {      //图片正确位置。
            root /opt;
        }
    }
}

在这里插入图片描述

7.2 uri——>其他网址

1.定义一个正常访问网站。

http {
    server {
        listen 80;
        server_name  www.qingjun.com;
        location   /qingjun {
            root /usr/local/nginx/html;
            index index.html index.htm;
        }
    }
}

//定义网页文件
mkdir /usr/local/nginx/html/qingjun
echo 'hehe' > /usr/local/nginx/html/qingjun/index.html

在这里插入图片描述
2.使用rewrite重定向,使其访问http:ip/qingjun会跳转到其他网址。

http {
    server {
        listen 80;
        server_name  www.qingjun.com;
        location   /qingjun {
            root /usr/local/nginx/html;
            index index.html index.htm;
            rewrite ^/qingjun/(.*)$ https://blog.csdn.net/yi_qingjun?spm=1011.2415.3001.5343;
        }
    }
}

在这里插入图片描述

3.调用其他网站的图片让客户访问。访问img转到其他网址。

http {
    server {
        listen 80;
        server_name  www.qingjun.com;
        location   /img {
            root /usr/local/nginx/html;
            index index.html index.htm;
            rewrite ^/img/(.*)$ https://cn.bing.com/images/search?view=detailV2&ccid=CxDCuKuu&id=FBA838ACF064A76AC0058220B2B6BCB1CBBD5DE6&thid=OIP.CxDCuKuuVVfXZ_eDRcfDuQHaEK&mediaurl=https%3a%2f%2fts1.cn.mm.bing.net%2fth%2fid%2fR-C.0b10c2b8abae5557d767f78345c7c3b9%3frik%3d5l29y7G8trIggg%26riu%3dhttp%253a%252f%252fi3.img.969g.com%252fdown%252fimgx2014%252f02%252f08%252f289_093214_13ee6.jpg%26ehk%3dDz0E1RuS%252fO0MM4sqy3TBm9fhMKtoEti9THnsNH%252buZY0%253d%26risl%3d%26pid%3dImgRaw%26r%3d0&exph=1080&expw=1920&q=%e7%b2%be%e7%be%8e%e5%a3%81%e7%ba%b8&simid=608041651648332714&FORM=IRPRST&ck=912A8F3A94487DA462B2C2764AC15A4A&selectedIndex=0&ajaxhist=0&ajaxserp=0;
        }
    }
}

在这里插入图片描述

7.3 uri——>uri——>uri

1.修改图片地址。

在这里插入图片描述

2.修改配置文件。

http {
    server {
        listen 80;
        server_name  www.qingjun.com;
        location   /img {
            root /opt;
            rewrite ^/img/(.*\.jpg)$ /image/$1 last;
        }
        location   /image {
            root /opt;
            rewrite ^/image/(.*\.jpg)$ /images/$1 last;
        }
    }
}

3.重启服务,访问网页。
在这里插入图片描述

八、if判断

语法 应用场景
if (condition) {…} server段、location段
condition类型 释义
变量 变量值为空串,或者以“0”开始,则为false,其它的均为true
以变量为操作数构成的比较表达式 可使用=,!=类似的比较操作符进行测试
正则表达式的模式匹配操作 ~:区分大小写的模式匹配检查。
~:不区分大小写的模式匹配检查。
!~和!~
:对上面两种测试取反
测试指定路径为文件的可能性 -f,!-f
测试指定路径为目录的可能性 -d,!-d
测试文件的存在性 -e,!-e
检查文件是否有执行权限 -x,!-x

8.1 浏览器分离

http {
    server {
        listen 80;
        server_name  www.qingjun.com;
        
        if ($http_user_agent ~ firefox) {
            rewrite ^(.*)$ /firefox/$1 break;
        }
        if ($http_user_agent ~ MSIE) {
            rewrite ^(.*)$ /msie/$1 break;
        }
        if ($http_user_agent ~ Chrome) {
            rewrite ^(.*)$ /chrome/$1 break;
        }
        
        location   / {
            root html;
            index index.html;
        }
    }
}

8.2 防盗链

location ~* \.(jpg|gif|jpeg|png)$ {
  valid_referers none blocked www.idfsoft.com;
  if ($invalid_referer) {
    rewrite ^/ http://www.idfsoft.com/403.html;
  }
}

九、反向代理与负载均衡

  • nginx实现动静分离。在反向代理的时候,若是静态资源,就直接从nginx发布的路径去读取,而不需要从后台服务器获取了。但是这种情况下需要保证后端和前端程序一致,可以使用Rsync做服务端自动同步或者使用NFS、MFS分布式共享存储。
  • 常用模块是proxy_pass和proxy_cache。模块使用都时需要编译进nginx的。

9.1 基本了解

  • nginx通过upstream模块来实现简单的负载均衡,upstream需要定义在http段内。
  • 在upstream段内,定义一个服务器列表,默认方式是轮询。

1.第一步。若要确定同一个访问者发出的请求总是由同一个后端服务器来处理,可以设置ip_hash,如下配置:

//注意:这个方法本质还是轮询,而且由于客户端的ip可能是不断变化的,比如动态ip,代理,翻墙等,因此ip_hash并不能完全保证同一个客户端总是由同一个服务器来处理。
upstream www.qingjun.com {
  ip_hash;
  server 127.0.0.1:9080 weight=5;
  server 127.0.0.1:8080 weight=5;
  server 127.0.0.1:1111;
}

2.第二步。定义好upstream后,需要在server段内添加如下内容:

server {
  location / {
    proxy_pass http://www.qingjun.com;
  }
}

9.2 示例

主机 IP 安装的服务
lb 192.168.161.129 nginx
RS1 192.168.161.131 httpd
RS2 192.168.161.132 httpd

1.在RS1和RS2上安装服务。

//RS1
yum -y install httpd
echo 'RS1' > /var/www/html/index.html
systemctl start httpd

//RS2
yum -y install httpd
echo 'RS2' > /var/www/html/index.html
systemctl start httpd

在这里插入图片描述
2.配置nginx负载均衡。

http {
    upstream www.runtime.com {     //这个名称需要与下面的location名称一致。
        server 192.168.161.131;     //负载哪个后端服务。
        server 192.168.161.132;
    }
    server {
        listen 80;
        server_name  www.qingjun.com;
        location   / {
            proxy_pass http://www.runtime.com;    //固定写法,只需要修改名称即可。
        }
    }
}

在这里插入图片描述
3.设置权重访问。

http {
    upstream www.runtime.com {
        server 192.168.161.131 weight=3;    //添加weight=3意味着访问3次,不设置则默认访问1次。
        server 192.168.161.132;
    }
    server {
        listen 80;
        server_name  www.qingjun.com;
        location   / {
            proxy_pass http://www.runtime.com;
        }
    }
}

在这里插入图片描述
4.设置始终要同一个后端服务器处理请求。访问显示是随机的,之后一致是该服务器处理请求。(存在瑕疵,慎用)

http {
    upstream www.runtime.com {
        ip_hash;
        server 192.168.161.131;
        server 192.168.161.132;
    }
    server {
        listen 80;
        server_name  www.qingjun.com;
        location   / {
            proxy_pass http://www.runtime.com;
        }
    }
}

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

nginx基础3——配置文件详解(实用功能篇) 的相关文章

  • 运行此处编译的 C 程序会导致在另一台服务器上找不到 GLIBC 库错误 - 是我的错还是他们的错?

    此处编译的 C 程序在我们的 Ubuntu 服务器上运行良好 但是当其他人尝试在他们的特定 Linux 服务器上运行它时 他们会收到以下错误 myprog install lib tls libc so 6 version GLIBC 2
  • XAMPP Windows 上的 Php Cron 作业

    嗯 我是这个词的新手CRON 据我所知 这是一个Unix安排特定操作在定义的时间间隔后执行的概念 我需要运行一个php文件 每小时更新一次数据库 但我的困惑在于安排执行 我在用XAMPP用于 Windows 7 上的本地开发测试 我发现了什
  • 使用 ProcessBuilder 运行 shell 脚本

    我正在尝试使用 Java 和 ProcessBuilder 运行脚本 当我尝试运行时 我收到以下消息 error 2 没有这样的文件或目录 我不知道我做错了什么 但这是我的代码 ps 我尝试只执行不带参数的脚本 错误是相同的 String
  • 为什么docker容器提示“权限被拒绝”?

    我使用以下命令来运行 docker 容器 并从主机映射目录 root database 到容器 tmp install database docker run it name oracle install v root database t
  • 完整的 C++ i18n gettext()“hello world”示例

    我正在寻找完整的 i18ngettext 你好世界的例子 我已经开始了一个基于的脚本使用 GNU gettext 的本机语言支持教程 https web archive org web 20130330233819 http oriya s
  • Apache 配置:正则表达式禁止访问以点开头的文件/目录

    我想禁用对其名称以点开头的任何文件或目录的访问 我想出了以下方法 但只有当它们直接位于文档根目录中时 它才会禁用对以 DOT 开头的文件 目录的访问
  • Docker nginx 代理到主机

    简短的介绍 Nginx 运行在 docker 上 如何配置 nginx 以便将调用转发到主机 详细描述 我们有一个 Web 应用程序与几个后端通信 假设为rest1 rest2 和rest3 我们负责rest1 让我们考虑一下我开始rest
  • 为什么默认情况下不启用 arp 忽略/通告 [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我有一个需要经验才能回答的具体问题 为什么 arp ignore arp announce 在 Linux 安装 例如 debian 上默认不启用 有
  • Bash - 比较 2 个文件列表及其 md5 校验和

    我有 2 个列表 其中包含带有 md5sum 检查的文件 即使文件相同 列表也具有不同的路径 我想检查每个文件的 md5 和 我们正在讨论数千个文件 这就是为什么我需要脚本来仅显示差异 第一个列表是普通列表 第二个列表是文件的当前状态 我想
  • nginx 解析器——dns

    请原谅一个非常初学者的问题 我无法理解 nginx 的 解析器 参数及其工作原理 我已阅读文档 搜索教程和帖子 使用解析器 nginx 和 dns 等关键字 但我仍然不确定如何应用解析器 http nginx org en docs htt
  • NGINX 和 Spark Java 之间的跨源通信

    我正在将 NGINX 和 Sparkjava 用于我的 Web 应用程序 我确信我已正确启用所有 CORS 标头 尽管如此 我还是得到了 XMLHttpRequest 无法加载http localhost 3003 platformAPI
  • pthread_self() 返回的线程 ID 与调用 gettid(2) 返回的内核线程 ID 不同

    这句话来自于pthread self 的手册页 http linux die net man 3 pthread self 那么 我应该根据什么来决定是否应该使用pthread self or gettid确定哪个线程正在运行该函数 两者都
  • Grep 递归和计数

    需要在具有大量子目录的目录中搜索文件内的字符串 我在用着 grep c r string here 我怎样才能找到总数量 如何仅输出至少具有一个实例的文件 使用 Bash 的进程替换 这给出了我认为是您想要的输出 如果不是 请澄清问题 gr
  • 如何禁用在 Apache 中向目录名添加尾部斜杠的 301 重定向

    Apache 2 2 20 自动将所有指向目录且没有尾部斜杠的请求重定向到带有尾部斜杠的相同 URL 如下所示 GET some path to dir HTTP 1 1 Host www some org 301 Moved perman
  • 查找并删除超过 x 天的文件或文件夹

    我想删除超过 7 天的文件和文件夹 所以我尝试了 17 07 14 email protected cdn cgi l email protection find tmp mindepth 1 maxdepth 1 ctime 7 exec
  • 如何使用 apache2 和 mod_proxy_fcgi 禁用缓冲?

    我在 debian Jessie 上使用 mod proxy fcgi 和 apache 2 4 以及我的 C 应用程序 该应用程序使用 libfcgipp 执行 ServerSentEvents 我的问题是 apache 仍然缓冲我的响应
  • 隐式声明“gets”

    据我所知 隐式声明 通常意味着该函数必须在调用之前放置在程序的顶部 或者我需要声明原型 然而 gets应该在stdio h文件 我已包含 有没有什么办法解决这一问题 include
  • 对于较大的请求正文,Nginx proxy_cache_key $request_body 将被忽略

    我使用 nginx 作为反向代理 我希望它能够缓存 POST 请求 我的后端已正确配置为为 POST 请求返回适当的缓存控制标头 在 nginx 中我配置了 proxy cache methods POST proxy cache key
  • 致命错误 - 未找到“Mongo”类

    我正在尝试执行此操作 但我收到以下错误 致命错误 在 C wamp www 中找不到类 Mongo Info PHP 5 38 MongoDB mongodb win32 i386 2 0 2 MongoDB PHP 驱动程序 mongo
  • 如何在 Spring Mvc 项目中设置上下文根

    我在 Tomcat 服务器中使用 Spring MVC 项目 每次运行应用程序时 服务器上下文根都会更改 如何设置固定上下文根 我的项目名称是 DemoApplication 首先部署此上下文根 路径是 http localhost 808

随机推荐

  • User-agent

    1 手机User Agent 更多关于手机User Agent请 点击 UPPOOL Mozilla 5 0 Linux U Android 8 1 0 zh cn BLA AL00 Build HUAWEIBLA AL00 AppleWe
  • 盘点

    选自Github 机器之心编译 hunkim 盘点了 Github 上 18 个深度学习项目 根据收藏数自动排名 最新的一次 update 在几小时前完成 项目地址 https github com hunkim DeepLearningS
  • sh: 1: pause: not found

    linux下运行c 程序时 希望控制台不会输出后马上消失 在windows系统下 用如下语句 include
  • redis-benchmark 基准测试

    redis benchmark 基准测试 大家好 我是爱吃鱼的程序员 一个渴望在互联网行业做到C位的程序员 可柔可刚 点赞则柔 白嫖则刚 看完记得给我来个三连哦 欢迎私信 1 概述 当我们希望提高性能的使用 往往想到的是异步 缓存这个两种手
  • nginx部署的时候出现403错误

    nginx部署的时候出现403错误 原因 启动用户和nginx工作用户不一致所致 解决方法 1 先查看当前的启动用户 命令 ps aux grep nginx worker process awk print 1 这样就是启动用户和工作用户
  • Linux下多线程调试的一些方法

    一直觉得Linux下的多线程调试是很麻烦的 因为一般大一点的程序线程会很多 通过gdb的info thread命令看全都是系统调用 看不到详细的方法 至少我看到是这样的 如果用thread id跟进每个thread去bt 是件相当痛苦的事情
  • 关于spring-boot中的@SpringBootApplication中的@ComponentScan的basePackages的路劲的设置。...

    最近在看spring boot的东西 然后搭建了spring boot的简单项目 但是在spring的入口处加载的时候一直加载不到 最后看了 SpringBootApplication的源码才知道 ComponentScan 如果不设置ba
  • ChatGPT教程:如何优化我们编写的Python代码?

    背景介绍 作为一名程序员 我们经常需要编写Python代码 然而 代码质量的好坏直接关系到程序的可读性 可维护性和可扩展性 因此 我们需要使用一些工具来帮助我们提高代码质量 ChatGPT是一种强大的自然语言处理模型 可以帮助我们完成这项任
  • 全面接入:ChatGPT杀进15个商业应用,让AI替你打工

    智东西 智能产业新媒体 智东西专注报道人工智能主导的前沿技术发展 和技术应用带来的千行百业产业升级 聚焦智能变革 服务产业升级 ChatGPT狂飙160天 世界已经不是两个月前的样子 文 李水青 编辑 心缘 来源 智东西 ID zhidxc
  • findbug类型

    Summary Description Category BC Equals method should not assume anything about the type of its argument Bad practice BIT
  • 十九、SpringAOP切面的单例与多例

    Repository Scope prototype public class UserDao implements IUserDao public void save System out println 保存成功 无返回值 Config
  • 硬件基础——滤波

    一 滤波概念 滤波是将信号中特定波段频率滤除的操作 是抑制和防止干扰的一项重要措施 滤波器分类 1 当允许信号中较高频率的成分通过滤波器时 这种滤波器叫做高通滤波器 2 当允许信号中较低频率的成分通过滤波器时 这种滤波器叫做低通滤波器 3
  • vue echarts 三维折线图

    效果图
  • USR-WIFI232-B2(WIFI)模块没有和服务器TCP连接成功时,单片机读取USR-WIFI232-B2(WIFI)模块的MAC地址

    您想要实现什么功能 1 单片机上电后先读取WIFI模块的MAC地址 2 读取完WIFI模块的MAC地址的后 WIFI模块和上位机进行TCP通信 WIFI模块作为服务器 需要发送 a 进入AT指令配置状态 读取MAC 读取之后 发送AT EN
  • 用HL7创建含多个code item的modality worklist

    需求 DCM4CHEE做RIS DICOM服务器 用NHAPI发ORM o01消息创建worklist 问题 在同一个OBR里面没法包含多个Scheduled Protocol Code Sequence item 创建出来的worklis
  • kafka介绍

    一 kafka介绍 1 1 kafka 模型介绍 Kafka 是一个开源的 轻量级的 支持多分区 多副本 基于 Zookeeper 的分布式消息流平台 相比于其它消息系统 其有以下优点 支持发布订阅模式的消息引擎系统 储存数据流时提供容错机
  • 直观了解CNN

    CNN解释器 https poloclub github io cnn explainer GitHub https github com poloclub cnn explainer 论文 https arxiv org abs 2004
  • Buck电路的参数计算及仿真

    一 Buck电路的参数计算较为简单 可以用matlab来完成 代码如下 clear clc Vin 12 输入电压单位V Vout 5 输出电压单位V Fs 100000 开关频率单位Hz DeltaIL 0 25 电流纹波单位A Delt
  • 实战DeviceIoControl 之五:列举已安装的存储设备

    Q 前几次我们讨论的都是设备名比较清楚的情况 有了设备名 路径 就可以直接调用CreateFile打开设备 进行它所支持的I O操作了 如果事先并不能确切知道设备名 如何去访问设备呢 A 访问设备必须用设备句柄 而得到设备句柄必须知道设备路
  • nginx基础3——配置文件详解(实用功能篇)

    文章目录 一 平滑升级 二 修饰符 2 1 无修饰符效果 2 2 精准匹配 2 3 区分大小写匹配 2 4 不区分大小写匹配 2 5 匹配优先级 三 访问控制 四 用户认证 五 配置https 六 开启状态界面 七 rewrite重写url