为什么要做nginx响应内容以及思路及解决方案
1 在某次seo中,发现google spider 爬取页面是500,这让我陷入到深深的沉思当中,为什么会产生这样的问题呢,我对google保持了怀疑!
2 于是在怀疑当中,我查看了google 5xx文档,发现可能是页面参数问题???(并不是!)
3 突然想到nginx具有查看日志的功能,然后 grep 了access日志,发现竟然是服务器返回的500!!!
4 但是此时我并不知道如何解决这个问题(应用程序不是我写的!世界上最美丽的语言我看不懂!)
5 于是我想到了,那可不可以用nginx来生成访问日志呢,带着这个疑问我打开了百度! 唉!还真行!
如何做 架构设计是怎么样的,需要用到哪些技术点
1 翻阅了一下资料后,我确定了一个方案,利用 lua-nginx-module 进行响应日志生成
2 日志有了,那如何不停机实现响应记录呢?因为之前已经有一台ng了,要是重新 add lua-nginx-module 岂不是要进行停机?
3 于是我有了第二套方案, 我新装一个ng,然后检测我想要的端口 代理转发过去不久行了嘛?
4 说干就干!
下载安装LuaJIT
# cd /usr/local/src
# wget http://luajit.org/download/LuaJIT-2.0.2.tar.gz
# tar -xzvf LuaJIT-2.0.2.tar.gz
# cd LuaJIT-2.0.2
# make
如果出现以下内容,则表示编译成功
OK Successfully built LuaJIT
make[1]: Leaving directory `/usr/local/src/LuaJIT-2.0.2/src'
==== Successfully built LuaJIT 2.0.2 ====
# make install
出现如下内容,表示安装成功
==== Successfully installed LuaJIT 2.0.2 to /usr/local ====
- 下载准备nginx lua模块
# cd /usr/local/src
# wget https://github.com/chaoslawful/lua-nginx-module/archive/v0.8.6.tar.gz
# tar -xzvf v0.8.6
- 安装nginx
# cd /usr/local/src/
# wget http://nginx.org/download/nginx-1.4.2.tar.gz
# tar -xzvf nginx-1.4.2.tar.gz
# cd nginx-1.4.2
//先导入环境变量,告诉nginx去哪里找luajit
# export LUAJIT_LIB=/usr/local/lib
# export LUAJIT_INC=/usr/local/include/luajit-2.0
# ./configure --prefix=/usr/local/nginx-1.4.2 --add-module=../lua-nginx-module-0.8.6
# make -j2
# make install
4.测试安装是否成功
# cd /usr/local/nginx-1.4.2/conf/
# vi nginx.conf
location /hello {
default_type 'text/plain';
content_by_lua 'ngx.say("hello, lua")';
}
当然,如果我们在正式环境,就不能够这样玩了,我们可以修改listen 监听的port来测试是否安装好了lua
ng配置转发
在我们确定已经装好了新的ng的时候,我们现在直接打开配置文件
cd /usr/local/nginx-1.4.2
vi conf/nginx.conf
添加井号包裹住的代码,这里贴图修改的代码,自取
[图片上传失败...(image-c26c43-1614329441204)]
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;
log_format mylog 'response_body:$resp_body';
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
server {
listen 80;
server_name localhost;
#记录nginx请求返回值
lua_need_request_body on;
set $resp_body "";
body_filter_by_lua '
local resp_body = string.sub(ngx.arg[1], 1, 1000)
ngx.ctx.buffered = (ngx.ctx.buffered or "") .. resp_body
if ngx.arg[2] then
ngx.var.resp_body = ngx.ctx.buffered
end
';
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
proxy_pass http://127.0.0.1:8091;
access_log /var/log/nginx/access.log mylog;
}
location /hello {
default_type 'text/plain';
content_by_lua 'ngx.say("hello, lua")';
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
注意:这里access_log 的地址就是我们request body的存储地址
原文链接:http://www.clhardstone.cn/2021/02/26/nginx%E4%B8%8D%E5%81%9C%E6%9C%BA%E5%AE%9E%E7%8E%B0%E8%AE%B0%E5%BD%95%E5%93%8D%E5%BA%94%E5%86%85%E5%AE%B9%E7%9A%84%E5%8A%9F%E8%83%BD/
博客地址:cayden_cheng