首页
Search
1
安装docker时报错container-selinux >= 2:2.74
124 阅读
2
rsync命令(可替代rm删除巨量文件)
101 阅读
3
docker 镜像加速器配置,daemon.json文件详解
90 阅读
4
使用国内镜像地址拉取k8s安装需要的images
79 阅读
5
Redhat 8版本安装ansible步骤
75 阅读
运维
自动化运维
数据库
容器与k8s
环境
云计算
脚本
登录
Search
标签搜索
命令
nginx
Mingrui
累计撰写
64
篇文章
累计收到
0
条评论
首页
栏目
运维
自动化运维
数据库
容器与k8s
环境
云计算
脚本
页面
搜索到
5
篇与
的结果
2024-03-06
nginx反向代理(负载均衡)中部分参数详解
nginx的代理功能是通过http proxy 模块实现的。该模块每个选项的详细解释如下。proxy_set_header 设置HTTP请求header项传给后端服务器节点,例如:可以实现让后端服务器节点获取访问客户端用户的真实IP地址。client_body_buffer_size 用于指定客户端请求主体缓冲区大小。proxy_connect_timeout 表示反向代理与后端服务器连接的超时时间,即发起握手等候响应的超时时间。proxy_send_timeout 表示代理后端服务器的数据传回时间,即在规定时间之内后端服务器必须传完所有的数据,否则nginx将断开这个连接。proxy_read_timeout 设置nginx从代理的后端服务器获取信息的时间。表示连接成功之后,nginx等待后端服务器的响应时间,也就是nginx已经进入后端的排队之中等候处理的时间。proxy_buffer_size 设置缓冲区大小,默认该缓冲区大小等于指令proxy_buffers 设置的大小。proxy_buffers 设置缓冲区大小。nginx从代理的后端服务器获取的响应信息,会放置到缓冲区。proxy_busy_buffers_size 用于设置系统繁忙时可以使用的proxy_buffer的大小。官方推荐的大小为proxy_buffers*2。proxy_temp_file_write_size 指定proxy缓存临时文件的大小。{lamp/}nginx反向代理重要参数解释proxy_pass http://server_pools;通过proxy_pass功能把用户的请求转发给反向代理定义的upstream服务器池proxy_set_header Host $host;在代理向后端服务器发送的http请求头中加入host字段信息,用于当后端服务器配置有多个虚拟主机时,可以识别代理的是哪个虚拟主机。这是节点服务器多虚拟主机时的关键配置proxy_set_header X-Forwarded-For $remote_addr;在代理向后端服务器发送的http请求头中加入X-Forwarded-For字段信息,用于后端服务器程序、日志等接收记录真实用户的IP,而不是代理服务器的IP。这是反向代理时,节点服务器获取用户真实IP的必要功能配置。proxy_set_header Host $host; proxy_set_header X-Forwarded-For $remote_addr; proxy_connect_timeout 60; proxy_send_timeout 60; proxy_read_timeout 60; proxy_buffer_size 4k; proxy_buffers 4 32k; proxy_busy_buffers_size 64k; proxy_temp_file_write_size 64k;{card-default label="特别说明" width=""}反向代理服务器如果配置了proxy_set_header X-Forwarded-For $remote_addr参数,这时如果节点服务器需要访问日志记录用户的真实IP,还需要在节点服务器上对日志格式进行配置,这样才能把代理传过来的X-Forwarded-For头信息记录下来。具体配置如下。{/card-default}#nginx.conf文件 http { include mime.types; …… log_format main '$remote_addr - $remote_user [$time_local] "$request"' '$status $body_bytes_sent "$http_referer"' '"$http_user_agent" " $http_x_forwarder_for"' ; …… }
2024年03月06日
55 阅读
0 评论
0 点赞
2024-03-05
nginx中location匹配规则与regex常用的正则表达式
location指令的作用是根据用户请求的URI来执行不同的应用。也就是根据用户请求的URI进行匹配,匹配成功即进行相关的操作location [=|~|~*|^~] uri { … }~:用于区分大小写的匹配(大小写敏感)~*:用于不区分大小写的匹配。!:可以用逻辑操作符“!”对上面的匹配取反,即“!~”、“!~*”^~:进行常规的字符串匹配检查后不做正则表达式的检查。不同匹配标识符的优先级优先级标识符匹配说明1location = / {精确匹配 /2location ^~ /images/ {匹配常规字符串,不做正则匹配检查3location ~* .(gif jpg jpeg)$ {正则匹配4location /documents/ {匹配常规字符串,如果有正则,优先匹配正则5location / {所有location都不能匹配后的默认匹配regex常用的正则表达式\ 将后面接着的字符标记为一个特殊字符或一个原义字符或一个向后引用。如,“\n”匹配一个换行符,“\”和“$”匹配“$”^ 匹配输入字符串的起始位置,$ 匹配输入字符串的结束位置匹配前面的字符零次或多次匹配前面的字符一次或多次? 匹配前面的字符零次或一次(pattern) 保留或作为一个整体。匹配括号内的pattern,并可以在后面获取相应的匹配。常用$0...$9属性获取小括号中匹配的内容
2024年03月05日
54 阅读
0 评论
0 点赞
2024-03-05
HTTP状态码解读
{callout color="#ff0000"}HTTP状态码是用来表示WEB服务器响应HTTP请求状态的数字代码。每当WEB客户端向服务器发送一个HTTP请求时,WEB服务器都会返回一个状态响应代码。这个代码是一个三位的数字,作用是告知WEB客户端此次请求是否成功,或者是否需要采取其他的动作方式{/callout}不同范围的状态码及其对应的作用100~199 用于指定客户端相应的某些动作200~299 用于表示请求成功300~399 (重定向)用于已经移动的文件,并且常被包含在定位头信息中指定新的地址400~499 用于指出客户端的错误500~599 用于指出服务器的错误常见状态码及其对应的作用200 服务器成功返回网页。这是成功的HTTP请求返回的标准状态码301 Moved Permanently 永久重定向302 临时重定向403 Forbidden 禁止访问,虽然这个访问是合法的,但是服务器端因为匹配了预先设置的规则而拒绝响应客户端的请求,此类问题一般为服务器或服务权限配置不当所致。典型的如nginx配置文件中没有配置默认首页参数,或者首页文件在站点目录下不存在。也可能是nginx没有站点目录或内部程序文件的访问权限,或者nginx配置文件中设置了allow或者deny等权限控制。404 Not Found 服务器找不到客户端请求的指定页面,可能是客户端请求了服务器上不存在的资源所致500 Internal Server Error 内部服务器错误,服务器遇到了意料之外的情况,不能完成客户端的请求。这是一个较为笼统的报错,一般为服务器的设置或内部程序问题导致。例如,SELinux开启,而又没有为HTTP设置规则许可,客户端访问就是500502 Bad Gateway 网关报错,一般是代理服务器请求后端服务时,后端服务器不可用或没有完成响应网关服务器。这通常为反向代理服务器下面的节点出问题所致。503 Service Unavailable 服务当前不可用,可能是服务器超载或停机维护所致,或者是反向代理服务器后面没有可以提供服务的节点504 Gateway Timeout 网关超时,一般是网关代理服务器请求后端服务时,后端服务没有在特定的时间内完成处理请求。多数是服务器过载导致没有在指定的时间内返回数据给前段代理服务器。其他状态码及其对应的作用201 (已创建) 请求成功并且服务器创建了新的资源202 (已接受) 服务器已接受请求,但尚未处理203 (非授权信息) 服务器已成功处理了请求,但返回的信息可能来自另一来源204 (无内容) 服务器成功处理了请求,但没有返回任何内容205 (重置内容) 服务器成功处理了请求,但没有返回任何内容206 (部分内容) 服务器成功处理了部分 GET 请求303 (查看其他位置) 请求者应当对不同的位置使用单独的 GET 请求来检索响应时,服务器返回此代码304 (未修改) 自从上次请求后,请求的网页未修改过。 服务器返回此响应时,不会返回网页内容305 (使用代理) 请求者只能使用代理访问请求的网页。 如果服务器返回此响应,还表示请求者应使用代理307 (临时重定向) 服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求401 (未授权) 请求要求身份验证。 对于需要登录的网页,服务器可能返回此响应405 (方法禁用) 禁用请求中指定的方法406 (不接受) 无法使用请求的内容特性响应请求的网页407 (需要代理授权) 此状态代码与 401(未授权)类似,但指定请求者应当授权使用代理408 (请求超时) 服务器等候请求时发生超时409 (冲突) 服务器在完成请求时发生冲突。 服务器必须在响应中包含有关冲突的信息410 (已删除) 如果请求的资源已永久删除,服务器就会返回此响应411 (需要有效长度) 服务器不接受不含有效内容长度标头字段的请求412 (未满足前提条件) 服务器未满足请求者在请求中设置的其中一个前提条件413 (请求实体过大) 服务器无法处理请求,因为请求实体过大,超出服务器的处理能力414 (请求的 URI 过长) 请求的 URI(通常为网址)过长,服务器无法处理415 (不支持的媒体类型) 请求的格式不受请求页面的支持416 (请求范围不符合要求) 如果页面无法提供请求的范围,则服务器会返回此状态代码417 (未满足期望值) 服务器未满足”期望”请求标头字段的要求501 (尚未实施) 服务器不具备完成请求的功能。 例如,服务器无法识别请求方法时可能会返回此代码505 (HTTP 版本不受支持) 服务器不支持请求中所用的 HTTP 协议版本
2024年03月05日
55 阅读
0 评论
0 点赞
2024-01-29
nginx日志文件按日期分割脚本
{card-describe title="写在开头"}工作环境下,更建议直接使用系统自带的日志切割工具lograte来进行日志分割。此脚本只为练习用。{/card-describe}{dotted startColor="#ff6c6c" endColor="#1989fa"/}1.若日志文件可能存在往日的访问信息,可以运行下面的脚本.该脚本先判断日志文件中是否存在过往的访问信息,如果存在,先处理这些过往信息。处理方式是按照日期生成文本文档,并写入对应的访问信息。然后清空日志文件,等待新的记录写入。如果不存在过往访问记录,则直接将该文件按日期重命名,然后通知nginx重新打开日志文件。说明:如果原始的日志文件非常大,可以先用split命令对文件进行切割,然后再逐个处理切割出来的小文件,以减轻服务器的压力。#!/bin/bash #将日志文件中未按日期分割的历史记录进行分割。 #获取日志文件中的日期信息,并将其写入临时文件 log_dir=/opt/access.log awk '{print $4}' $log_dir | awk -F: '{print $1}' | sed 's/\[//' | sort -u -t/ -k3 -k1 > /opt/log_date.txt #先判断日志文件中是否存在往期的日志信息,如果存在,先处理历史日志信息。 sum=`wc -l < /opt/log_date.txt` if [ $sum -gt 1 ];then #通过for循环,将历史日志记录按日期分别记录到指定的文件内。 for i in `cat /opt/log_date.txt` do dir=`echo $i| sed 's#/#-#g' ` grep $i $log_dir >> /opt/a/$dir-access.log done > $log_dir else dir=`cat /opt/log_date.txt| sed 's#/#-#g' ` mv $log_dir /opt/a/$dir-access.log kill -USR1 $(cat /var/run/nginx.pid) #通过USER1信号通知nginx重新打开日志文件 $nginx_sbin force-reload fi {lamp/}一个简单的分割脚本#!/bin/bash Dateformat=`date +%Y%m%d` Basedir="/usr/local/nginx" Nginxlogdir="$Basedir/logs" Logname="access_www" [ -d $Nginxlogdir ] && cd $Nginxlogdir || exit 1 [ -f ${Logname}.log ] || exit 1 mv ${Logname}.log ${Dateformat}_${Logname}.log $Basedir/sbin/nginx -s reload {lamp/}一个非常耗时的日志分割脚本cat access.log | while read i a b t c do date_dir=`echo $t|sed 's#\[##'|sed 's#\/#-#g'|cut -d: -f1` echo $i $a $b $t $c >> /tmp/log/$date_dir-log.txt date=`echo $date_dir| sed 's#-#\.#g'` sed -i "/$i.*$date/d" access.log done
2024年01月29日
56 阅读
0 评论
0 点赞
2024-01-01
nginx配置文件详解
#user nobody; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; events { worker_connections 1024; } http { include 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 logs/access.log main; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #gzip on; server { listen 80; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location / { root html; index index.html index.htm; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } # proxy the PHP scripts to Apache listening on 127.0.0.1:80 # #location ~ \.php$ { # proxy_pass http://127.0.0.1; #} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # #location ~ \.php$ { # root html; # fastcgi_pass 127.0.0.1:9000; # fastcgi_index index.php; # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; # include fastcgi_params; #} # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # #location ~ /\.ht { # deny all; #} } # another virtual host using mix of IP-, name-, and port-based configuration # #server { # listen 8000; # listen somename:8080; # server_name somename alias another.alias; # location / { # root html; # index index.html index.htm; # } #} # HTTPS server # #server { # listen 443 ssl; # server_name localhost; # ssl_certificate cert.pem; # ssl_certificate_key cert.key; # ssl_session_cache shared:SSL:1m; # ssl_session_timeout 5m; # ssl_ciphers HIGH:!aNULL:!MD5; # ssl_prefer_server_ciphers on; # location / { # root html; # index index.html index.htm; # } #} }
2024年01月01日
62 阅读
0 评论
0 点赞