目录
Nginx代理
1.代理的概念
中介、中间人
2.代理的实现方式
正向代理
内网到公网
反向代理
外网到内网
nginx作为代理服务器可以实现很多协议的代理,如http、IMAP\POP https。
3.代理配置参数
3.1.添加发往后端服务器的请求头信息
Syntax:proxy_set_header field value;
Default: proxy_set_header Host $proxy_host;
proxy_set_header Connection close;
Context:http,server,location
#用户请求的时候HOST的值是www.oldboy.com,那么代理服务器会像后端传递请求的还是www.oldboy.com。proxy_set_header Host $http_Host;
#将 r e m o t e a d d r 的 值 放 进 变 量 X − R e a l − I P 中 , remote_addr的值放进变量X-Real-IP中, remoteaddr的值放进变量X−Real−IP中,remote_addr的值为客户端的ip proxt_set_header X-Real-ip $remote_addr;
#客户端通过代理服务器访问后端服务,后端服务通过该变量会记录真是客户端地址 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
3.2.代理到后端的TCP连接、响应等超时时间
//nginx代理与后端服务器连接超时时间(代理连接超时)
Syntax:proxy_connect_timeout time;
Default:proxy_connect_timeout 60s;
Context:http,server,location
//nginx代理等待后端服务器的响应时间
Syntax:proxy_read_timeout time;
Default:proxy_read_timeout 60s;
Context:http,server,location
//后端服务器数据回传给nginx代理超时时间
Syntax:porxy_send_timeout time;
Default:proxy_send_timeout 60s;
Context:http,server,location
3.3.proxy_buffer代理缓存区
//nginx会把后端返回内容放到缓存区当中,然后在返回给客户端,边收边传,不是全部接收在传给客户端
Syntax:proxy_buffering on | off;
Default:proxy_buffering on;
Context:http , server , location
//设置nginx代理保存用户信息的缓存区
Syntax:proxy_buffer_size size;
Default:proxy_buffer_size 4k|8k;
Context:http , server , location
//proxy_buffers 缓存区
Syntax:proxy_buffers number size;
Default:proxy_buffers 8 4k|8k;
Context:http , server , location
3.4.proxy代理网站常用配置如下,将配置写入新文件,调用使用include引用即可
[root@bl01 nginx]# cat proxy_params
#请求头部
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#超时时间
#nginx代理与后端服务器连接超时时间(代理超时30秒)
proxy_connect_timeout 30;
#nginx代理等待后端服务器的响应时间60s
proxy_send_timeout 60;
# 后端服务器数据回传给nginx代理超时时间60s
proxy_read_timeout 60;
#缓存的配置
proxy_buffering on;
proxy_buffer_size 32k;
proxy_buffers 4 128k;
4.实际操作
web01操作
[root@web01 conf.d]# cat wordpress.conf
server {
listen 80;
server_name yan.wordpress.com;
root /html/wordpress;
index index.php index.html;
access_log /html/wordpress/log/access.log;
error_log /html/wordpress/log/error.log;
location ~ \.php$ {
root /html/wordpress;
index index.php index.html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
[root@bl01 conf.d]# systemctl restart nginx
LB代理操作
[root@bl01 nginx]# cat proxy_params
#请求头部
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#超时时间
#nginx代理与后端服务器连接超时时间(代理超时30秒)
proxy_connect_timeout 30;
#nginx代理等待后端服务器的响应时间60s
proxy_send_timeout 60;
#后端服务器数据回传给nginx代理超时时间60s
proxy_read_timeout 60;
#缓存的配置
proxy_buffering on;
proxy_buffer_size 32k;
proxy_buffers 4 128k;
[root@bl01 conf.d]# cat wordpress_proxy.conf
server {
listen 80;
server_name yan.wordpress.com;
location / {
proxy_pass http://172.168.20.6:80;
include proxy_params;
}
}
[root@bl01 conf.d]# systemctl restart nginx 重启会清空缓存
5.排错
如果通过代理访问不到web页面,怎么排错。
-
检查web服务器是否能提供服务,
检查配置文件
根据日志判断错误类型
网页也目录、索引页是否创建,权限
服务是否启动
-
检查代理服务器的配置
检查配置文件