Nginx搭建反向代理

现阶段,搭建了一个windows的服务器,上面安装了网站安全狗和火绒

已经对网站起到了一定的防护作用

  • 目标服务器:192.168.198.136
  • 代理服务器:192.168.198.137

目标

  • 搭建nginx反向代理,对目标起到一定的保护
  • 记录post日志,防止在目标服务器上被删除,记录在nginx服务器上
  • 可以采用安装宝塔或者其他具有防护性质的nginx,进一步对网站进行防护

宝塔开心版

找一个能用的

然后仅仅安装nginx即可,然后找到专业版插件,安装防火墙

image-20210726112643424

配置代理

接下来备份nginx的配置文件

  • cd /www/server/nginx/conf
  • cp nginx.conf nginx.conf.bak

下面的配置,一定要加载http{}

出现nginx: [emerg] "upstream" directive is not allowed here类似的错误,都是添加的配置,位置不当造成的

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
upstream awdserver {  
server 192.168.198.136:80;
}
server {
listen 80;
server_name 192.168.198.137;

#charset koi8-r;

#access_log logs/test8081.com.log main;

location / {
proxy_pass http://awdserver;
index index.html index.htm;
}
}

成功代理,

image-20210726114139847

测试宝塔效果

image-20210726114153925

配置日志记录

在配置的server上方添加

1
log_format access '$remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent $request_body "$http_referer" "$http_user_agent" $http_x_forwarded_for $http_cookie';

server中添加日志记录的文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
server {  
listen 80;
server_name 192.168.198.137;

#charset koi8-r;

#access_log logs/test8081.com.log main;

location / {
proxy_pass http://awdserver;
index index.html index.htm;
}
access_log /www/wwwlogs/access_137.log access;
}

已经可以成功记录post的参数的内容了

image-20210726115238858

但是感觉这个日志文件还是太大了,怎么按天来记日志

现在server前面设置一个变量

1
2
3
4
map $time_iso8601 $logdate {
'~^(?<ymd>\d{4}-\d{2}-\d{2})' $ymd;
default 'date-not-found';
}

然后修改日志的文件名字

1
access_log /www/wwwlogs/access_$logdate.log access;

image-20210726115721820

配置完成

但是这个时候发现,关于静态资源获取不到

在之前的server中添加如下配置

1
2
3
4
5
6
location ~ .* {
proxy_pass http://你的upstream配置的名称;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Fonwarded-For $proxy_add_x_forwarded_for;
}

进一步修改日志格式,本来不太好看,可以修改成json的或者自己调整基础格式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
log_format access '{"remote_addr": "$remote_addr",'
'"@timestamp": "$time_iso8601",'
'"request_uri": "$request_uri",'
'"verb": "$request_method",'
'"httpversion": "$server_protocol",'
'"response": "$status", '
'"body_bytes_sent": "$body_bytes_sent", '
'"referrer": "$http_referer", '
'"user_agent": "$http_user_agent", '
'"http_x_forwarded_for": "$http_x_forwarded_for", '
'"server_name": "$host",'
'"request_time": "$request_time",'
'"upstream_response_time": "$upstream_response_time",'
'"realpath_root": "$realpath_root",'
'"cookie": "$http_cookie",'
'"request_body": "$request_body",'
'"nginx_version": "$nginx_version",'
'"scheme": "$scheme"}';

直接把配置文件的后缀也改成json

image-20210726132915346