Nginx

本文详细介绍了Nginx的基本概念,包括其作为HTTP服务器的功能、正向代理和反向代理的工作原理,以及如何生成和配置自定义SSL证书。此外,还涵盖了Nginx资源压缩的配置选项和CRLF漏洞的相关知识。
摘要由CSDN通过智能技术生成

Nginx

Nginx是一个 HTTP和反向代理服务器,邮件代理服务器,和一个通用的TCP/UDP代理服务器。Nginx 专为性能优化而开发,性能是其最重要的考量,实现上非常注重效率,能经受高负载的考验,最大能支持50000个并发连接数

正向代理

正向代理服务器位于客户端和服务器之间,为了从服务器获取数据,客户端要向代理服务器发送一个请求,并指定目标服务器,代理服务器将目标服务器返回的数据转交给客户端。这里客户端需要要进行一些正向代理的设置的。

server {    
    listen    8080;    
    server_name localhost;         
    location /default/ {      
      proxy_pass http://localhost;    
    } 
}

listen 表示要监听的8080端口
server_name 是指访问nginx时在浏览器中输入的域名,可以直接填ip地址,要绑定多个可以用空格隔开
location 表示nginx监听该端口时要匹配的url,如果访问nginx的url中包含有/default/就执行代理
proxy_pass 表示nginx要把客户端的请求代理到的目标。

反向代理

客户端对代理服务器是无感知的,客户端不需要做任何配置,用户只请求反向代理服务器,反向代理服务器选择目标服务器,获取数据后再返回给客户端。反向代理服务器和目标服务器对外而言就是一个服务器,只是暴露的是代理服务器地址,而隐藏了真实服务器的IP地址。

server {
 listen       80;
 server_name  192.168.17.129;

 location / {
  root   html;
  index  index.html index.htm;
  proxy_pass  http://127.0.0.1:8080
 }
}

此时监听 80 端口,访问域名为 http://www.123.com(不加端口号时默认为 80 端口),访问该域名时会跳转到 127.0.0.1:8080 路径上。

Nginx生成自定义证书

执行如下命令生成一个key 生成私钥

openssl genrsa -des3 -out ssl.key 4096

由于生成时候必须输入密码。你可以输入后 再删掉。
改名可以消掉密码,避免每次登录nginx都需要输入密码

mv ssl.key xxx.key

改名之后重新生成一个私钥

openssl rsa -in xxx.key -out ssl.key 

这样就可以取消登录的密码

然后根据这个key文件生成证书请求文件

openssl req -new -key ssl.key -out ssl.csr

然后需要填写一些文件

Country Name (2 letter code) [XX]:china
string is too long, it needs to be less than  2 bytes long
Country Name (2 letter code) [XX]:ch
State or Province Name (full name) []:sc
Locality Name (eg, city) [Default City]:zigong
Organization Name (eg, company) [Default Company Ltd]:oupeng
Organizational Unit Name (eg, section) []:it
Common Name (eg, your name or your server's hostname) []:0.0.0.0
Email Address []:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

生成证书
其中的365代表证书有效的时间

[root@bogon key]# openssl x509 -req -days 365 -in ssl.csr -signkey ssl.key -out ssl.crt
Signature ok
subject=/C=ch/ST=sc/L=zigong/O=oupeng/OU=it/CN=0.0.0.0
Getting Private key

在需要使用证书的nginx配置文件的server节点里加入以下配置就可以了。

server {
  listen 443;#https默认使用443端口
  server_name 0.0.0.0; #将0.0.0.0替换为你的网站域名或ip

  ssl on;
  ssl_certificate /etc/nginx/key/ssl.crt;
  ssl_certificate_key /etc/nginx/key/ssl.key;
  ssl_session_timeout 5m;
  ssl_protocols SSLv2 SSLv3 TLSv1;
  ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;

  ssl_prefer_server_ciphers on;

   location / {
      ...
     }

最后再重启nginx就行了

Nginx资源压缩

Nginx也提供了三个支持资源压缩的模块ngx_http_gzip_module、ngx_http_gzip_static_module、ngx_http_gunzip_module,其中ngx_http_gzip_module属于内置模块,代表着可以直接使用该模块下的一些压缩指令,后续的资源压缩操作都基于该模块,先来看看压缩配置的一些参数/指令:

gzip开启或关闭压缩机制on/off;
gzip_types根据文件类型选择性开启压缩机制image/png、text/css...
gzip_comp_level用于设置压缩级别,级别越高越耗时1~9(越高压缩效果越好)
gzip_vary设置是否携带Vary:Accept-Encoding头域的响应头部on/off;
gzip_buffers设置处理压缩请求的缓冲区数量和大小数量 大小,如16 8k;
gzip_disable针对不同客户端的请求来设置是否开启压缩.*Chrome.*;
gzip_http_version指定压缩响应所需要的最低HTTP请求版本1.1;
gzip_min_length设置触发压缩的文件最低大小512k;
gzip_proxied对于后端服务器的响应结果是否开启压缩off、expired、no-cache...
http{
    # 开启压缩机制
    gzip on;
    # 指定会被压缩的文件类型(也可自己配置其他类型)
    gzip_types text/plain application/javascript text/css application/xml text/javascript image/jpeg image/gif image/png;
    # 设置压缩级别,越高资源消耗越大,但压缩效果越好
    gzip_comp_level 5;
    # 在头部中添加Vary: Accept-Encoding(建议开启)
    gzip_vary on;
    # 处理压缩请求的缓冲区数量和大小
    gzip_buffers 16 8k;
    # 对于不支持压缩功能的客户端请求不开启压缩机制
    gzip_disable "MSIE [1-6]\."; # 低版本的IE浏览器不支持压缩
    # 设置压缩响应所支持的HTTP最低版本
    gzip_http_version 1.1;
    # 设置触发压缩的最小阈值
    gzip_min_length 2k;
    # 关闭对后端服务器的响应结果进行压缩
    gzip_proxied off;
}

在上述的压缩配置中,最后一个gzip_proxied选项,可以根据系统的实际情况决定,总共存在多种选项:

  • off:关闭Nginx对后台服务器的响应结果进行压缩。
  • expired:如果响应头中包含Expires信息,则开启压缩。
  • no-cache:如果响应头中包含Cache-Control:no-cache信息,则开启压缩。
  • no-store:如果响应头中包含Cache-Control:no-store信息,则开启压缩。
  • private:如果响应头中包含Cache-Control:private信息,则开启压缩。
  • no_last_modified:如果响应头中不包含Last-Modified信息,则开启压缩。
  • no_etag:如果响应头中不包含ETag信息,则开启压缩。
  • auth:如果响应头中包含Authorization信息,则开启压缩。
  • any:无条件对后端的响应结果开启压缩机制。

CRLF漏洞复现

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值