Nginx代理及其他应用

Nginx代理及其他应用

一、Nginx的代理应用

1.什么是代理

2.代理的类型

正向代理:代理服务器代理客户端向服务端发送请求的
		服务端不清楚真是访问的客户端是谁
反向代理:代理服务器代理服务端接受客户端的请求
		客户端不知道真实的服务端是谁
日常互联网中一般使用反向代理作为服务端部署环境。正向代理常用来做渗透测试的工具

3.实现代理功能

1.正向代理的实现
环境准备:代理服务器 10.0.0.5 proxy
		网站服务器 10.0.0.11 web
2.在代理服务器部署代理应用
#安装
yum install nginx -y
#配置nginx正向代理
vim /etc/nginx/conf.d/pos-proxy.conf

server {
	listen 999;
	resolver 223.5.5.5;
	location / {
		proxy_pass http://$host$request_uri;     #设定代理服务器的协议和地址 
		proxy_set_header HOST $host;
		proxy_buffers 256 4k;
		proxy_max_temp_file_size 0k;
		proxy_connect_timeout 30;
		proxy_send_timeout 60;
		proxy_read_timeout 60;
		proxy_next_upstream error timeout invalid_header http_502;
	}
}

de8284d226c83d4a3523c35bac051a7e

#客户端通过代理访问网站
通过火狐浏览器访问:配置代理
命令行:curl -x 10.0.0.5:999 10.0.0.11

#浏览器测试访问10.0.0.11

#DDOS
通过大量并发性流量请求,导致被攻击主机无法建立其他连接
##DDOS攻防

#在web服务器检查访问者来源ip
tail -f /usr/local/nginx/logs/access.log

f06b83c99cc88e5d4eac8c1b2153265d

4.nginx实现反向代理

1.服务端本地代理
环境:反向代理节点:10.0.0.11:1000 --> 10.0.0.11:1234
2.部署本地站点
cat >/usr/local/nginx/conf/conf.d/proxy-test.conf<<'EOF'
   server {
     listen 1234;
	 server_name localhost;
	 root /html/proxy-test;
	 index index.html;
   }     
EOF

mkdir /html/proxy-test -p 
echo '测试代理' >/html/proxy-test/index.html
3.通过反向代理实现代理后端站点
#本地代理
vim /usr/local/nginx/conf/conf.d/proxy-test.conf
server {
        listen 1000;
        server_name proxy.dms.com;

        location / {
                proxy_pass http://10.0.0.11:1234;
        }
}

5.远程反向代理

环境准备:代理服务器 10.0.0.5 proxy
		网站服务器 10.0.0.11 web
环境:反向代理节点:10.0.0.5:1000 --> 10.0.0.11:1234		
#代理服务器配置反向代理
vim /etc/nginx/conf.d/neg-proxy.conf
server {
        listen 1000;
        server_name proxy.dms.com;

        location / {
                proxy_pass http://10.0.0.11:1234;
        }
}
环境2:环境:反向代理节点:10.0.0.5 proxy.dms.com --> 10.0.0.11 proxy.dms.com
web站点配置:
server {
     listen 80;
	 server_name proxy.dms.com;
	 root /html/proxy-test;
	 index index.html;
} 
代理服务器配置
server {
        listen 80;
        server_name proxy.dms.com;

        location / {
                proxy_pass http://10.0.0.11;
                proxy_set_header HOST $host;	#规定代理过程中的host
                proxy_http_version 1.1;			#规定代理过程中的协议版本
        }
}

远程代理存在问题

  1. 反向代理过程中host没有携带
  2. 代理过程中协议版本默认使用1.0版本

6.反向代理https网站问题

# 传输证书到代理服务器
scp -r /usr/local/nginx/conf/ssl     10.0.0.5:/etc/nginx/
#为代理文件配置证书
server {
  listen 443 ssl;
  server_name wordpress.dms.com;
  ssl_certificate ./ssl/ca.crt;
  ssl_certificate_key ./ssl/private.pem;

  location / {
    proxy_pass  https://10.0.0.11;
    proxy_set_header HOST  $host;
    proxy_http_version 1.1;
  }
}

server {
  listen 80;
  server_name wordpress.dms.com;

  location / {
    rewrite (.*) https://$host$uri permanent;
  }
}

二、Nginx日志管理

1.有哪些日志

访问日志:用于记录访问者的信息

错误日志:用于记录Nginx处理http请求的错误信息

/usr/local/nginx/logs/
/var/log/nginx/

#开启日志
vim /usr/local/nginx/conf/nginx.conf
取消注释
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;

2.访问日志

/usr/local/nginx/logs/access.log
/var/log/nginx/access.log
#日志格式
$remote_addr 				#访问者的来源IP
$remote_user 				#访问者的用户信息
[$time_local]				#访问时间 
"$request					#记录访问者的请求的URL信息
$status						#状态码
$body_bytes_sent			#请求资源包大小 
"$http_referer"				#页面转发来源
'"$http_user_agent"			#客户端信息
"$http_x_forwarded_for"'	#真实IP的链路追踪
$remote_addr$remote_user$time_local$request$status$body_bytes_sent$http_referer$http_user_agent$http_x_forwarded_for
访问者的来源IP访问者的用户信息访问时间记录访问者的请求的URL信息状态码请求资源包大小页面转发来源客户端信息真实IP的链路追踪
定义访问日志
#单独对wordpress存放日志
在子配置文件的server中单独定义
server {
   listen 443 ssl;
   server_name wordpress.dms.com;
   root /html/wordpress;
   index index.html index.php;
   ssl_certificate ./ssl/ca.crt;
   ssl_certificate_key ./ssl/private.pem;
   access_log  logs/access-wordpress.log  main;
}

代理节点记录真实访问IP
# 配置代理记录用户真实访问ip
proxy_set_header X-Real-IP $remote_addr; 						# 记录当前接收请求的来源ip
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;	# 记录当前真实ip到x-forwarded中
##多级代理:每一级代理都需要开启记录X-Forwarded-For

server {
  listen 443 ssl;
  server_name wordpress.dms.com;
  ssl_certificate ./ssl/ca.crt;
  ssl_certificate_key ./ssl/private.pem;

  location / {
    proxy_pass  https://10.0.0.11;
    proxy_set_header HOST  $host;
    proxy_http_version 1.1;
    # 记录当前接收请求的来源ip
    proxy_set_header X-Real-IP $remote_addr; 
    # 记录当前真实ip到x-forwarded中
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }
}

server {
  listen 80;
  server_name wordpress.dms.com;

  location / {
    rewrite (.*) https://$host$uri permanent;
  }
}

3.错误日志

/usr/local/nginx/logs/error.log
/var/log/nginx/error.log
#定义错误日志
error_log logs/error.log 记录日志的信息的级别
	info	#基本信息全记录
	warn	#警告级别以上都会记录
	error	#只记录error报错
  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值