Nginx代理服务

正向代理

正向代理是一个位于客户端和目标服务器之间的代理服务器(中间服务器)。为了从目标服务器取得内容,客户端向代理服务器发送一个请求,并且指定目标服务器,之后代理向目标服务器转发请求,将获得的内容返回给客户端。正向代理的情况下,客户端必须要进行一些特殊的设置才能使用。

image-20220817223642983

在代理服务器中进行设置(这样让客户端直接向代理服务器发请求)

1
2
3
4
5
6
7
server {
listen 82;
resolver 8.8.8.8;
location /{
proxy_pass http://$host$request_uri;
}
}

反向代理

Nginx反向代理模块的指令是由ngx_http_proxy_module模块进行解析,该模块在安装Nginx的时候已经自己加装到Nginx中了

基本的相关指令

proxy_pass指令

proxy_pass:该指令用来设置被代理服务器地址,可以是主机名称、IP地址加端口号形式。

proxy_pass URL;(URL:为要设置的被代理服务器地址,包含传输协议(http,https://)、主机名称或IP地址加端口号、URI等要素。)

proxy_set_header指令

proxy_set_header:该指令可以更改Nginx服务器接收到的客户端请求的请求头信息,然后将新的请求头发送给代理的服务器

proxy_set_header field value;

proxy_redirect指令

proxy_redirect:该指令是用来重置头信息中的”Location”和”Refresh”的值。

proxy_redirect redirect replacement;proxy_redirect default;proxy_redirect off;

Nginx的SSL相关指令

ssl指令

ssl:该指令用来在指定的服务器开启HTTPS,可以使用 listen 443 ssl,后面这种方式更通用些,默认值off。

ssl on|off;

ssl_certificate指令

ssl_certificate:为当前这个虚拟主机指定一个带有PEM格式证书的证书。

ssl_certificate file;

ssl_certificate_key指令

ssl_certificate_key:该指令用来指定PEM secret key文件的路径

ssl_ceritificate_key file;

ssl_session_cache指令

ssl_session_cache:该指令用来配置用于SSL会话的缓存

ssl_sesion_cache off|none|[builtin[:size]] [shared:name:size];

属性说明:

  • off:禁用会话缓存,客户端不得重复使用会话
  • none:禁止使用会话缓存,客户端可以重复使用,但是并没有在缓存中存储会话参数
  • builtin:内置OpenSSL缓存,仅在一个工作进程中使用。
  • shared:所有工作进程之间共享缓存,缓存的相关信息用name和size来指定

ssl_session_timeout指令

ssl_session_timeout:开启SSL会话功能后,设置客户端能够反复使用储存在缓存中的会话参数时间。

ssl_session_timeout time;

ssl_ciphers指令

ssl_ciphers:指出允许的密码,密码指定为OpenSSL支持的格式

ssl_ciphers ciphers;

ssl_prefer_server_ciphers指令

ssl_prefer_server_ciphers:该指令指定是否服务器密码优先客户端密码

ssl_perfer_server_ciphers on|off;

缓冲区的相关指令

proxy_buffering指令

proxy_buffering :该指令用来开启或者关闭代理服务器的缓冲区,默认值为on。

proxy_buffering on|off;

proxy_buffers:指令

proxy_buffers:该指令用来指定单个连接从代理服务器读取响应的缓存区的个数和大小。

proxy_buffers number size;

属性说明:

  • number:缓冲区的个数
  • size:每个缓冲区的大小,缓冲区的总大小就是number*size

proxy_buffer_size指令

proxy_buffer_size:该指令用来设置从被代理服务器获取的第一部分响应数据的大小。保持与proxy_buffers中的size一致即可,当然也可以更小。

proxy_buffer_size size;

proxy_busy_buffers_size指令

proxy_busy_buffers_size:该指令用来限制同时处于BUSY状态的缓冲总大小。

proxy_busy_buffers_size size;

proxy_temp_path指令

proxy_temp_path:当缓冲区存满后,仍未被Nginx服务器完全接受,响应数据就会被临时存放在磁盘文件上,该指令设置文件路径

proxy_temp_path path;(注意path最多设置三层。 )

proxy_temp_file_write_size指令

proxy_temp_file_write_size:该指令用来设置磁盘上缓冲文件的大小。

proxy_temp_file_write_size size;

通用网站的配置

1
2
3
4
proxy_buffering on;
proxy_buffer_size 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;