自学内容网 自学内容网

nginx-2-配置

准备配置文件

  • 解压后去除多余内容
worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    server {
        listen       80;
        server_name  localhost;
        location / {
            root   html;
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}
  • 进一步去除,添加注解,nginx的最小配置项
# 表示只启动几个工作进程,具体值为多少,一般根据CPU核数来定,如果CPU为八核,那么此处值就填8。
worker_processes  1;

# 定义与服务器事件处理模型相关的参数和指令
events {
# 连接数量,每个进程可以处理多少连接。一般就保持默认,1024。
    worker_connections  1024;
}


http {
# nginx能够识别出的文件类型,指定一个文件,这个文件中存储了nginx能够识别出的文件类型,默认为nginx.conf同一目录下的mime.types文件
    include       mime.types;
# 文件类型没有在include指定的文件中,会以default_type指定的类型返回数据。
    default_type  application/octet-stream;
# 
    sendfile        on;

    keepalive_timeout  65;

# 该部分就是针对网站代码的配置,如果我们需要配置多个网站,可以复制配置多个server
    server {
# 指定访问该网站的端口号,默认为80。
        listen       80;
# 配置域名
        server_name  localhost;
# 匹配以什么开头的URI,默认为/,表示匹配所有请求。如配置了/user,那么请求ip:端口/user/xx就会匹配到该路由。
        location / {
# 指定项目的目录。可以填写绝对路径,也可以填写相对路径。填写相对路径是,默认根路径为/usr/share/nginx。
            root   html;
# 指定了当请求是一个目录时,Nginx应该返回哪个文件作为默认文件。
            index  index.html index.htm;
        }
    }
}

防盗链(网站优化)

  • 自定义service
server {
# 指定访问该网站的端口号,默认为80。
listen       9999;
# 配置域名
server_name  localhost;
# 匹配以什么开头的URI,默认为/,表示匹配所有请求。如配置了/user,那么请求ip:端口/user/xx就会匹配到该路由。
location / {
# 指定项目的目录。可以填写绝对路径,也可以填写相对路径。填写相对路径是,默认根路径为/usr/share/nginx。
root   opt/test/;
}
# 拦截三种类型访问
location ~* .*\.(gif|jpg|png)$ {
# 指定项目的目录。可以填写绝对路径,也可以填写相对路径。填写相对路径是,默认根路径为/usr/share/nginx。
root   opt/test/img/;
# 放行白名单(防盗链)
valid_referers none blocked taobao.com;
if($valid_referers){
# return 403;
# 重写
rewrite ^/ http://10.10.100.146:9999/error.webg
break;
}
}
}

gzip压缩

# 开启gzip压缩
gzip  on
# 压缩类型(js、css\text\json等)文本压缩的效果最好
gzip_type application/type

brotli压缩

优缺

  • 优: 比gzip性能提升10~18%
  • 缺: 普及率低
  • 缺: 仅支持https

集成模块

  • 下载源码
# 1.切换nginx编译路径的上级路径
cd /opt/
# 2.执行命令
sudo git clone https://github.com/google/ngx_brotli.git
# 3.切换ngx_brotli路径
cd ngx_brotli/
# 4.下载算法
sudo git submodule update --init
# 5.切换nginx源码路径下
cd /opt/nginx-1.26.2/
# 安装brotli
sudo apt-get install libbrotli-dev
# 6. 配置
sudo ./configure --prefix=/home/nginx --with-http_ssl_module --add-module=/opt/ngx_brotli
# 7.编译
sudo make
# 8.替换执行文件
sudo mv ./objs/nginx  /home/nginx/sbin/nginx
# 9查看
 /home/nginx/sbin/nginx -V
  • 修改配置文件
http{
# 开启gzip压缩
gzip  on
# 压缩类型(js、css\text\json等)文本压缩的效果最好
gzip_type application/javascrpt

# 开启brotli压缩(service 需要配饰ssl)
brotli  on
# 压缩类型(js、css\text\json等)文本压缩的效果最好
brotli_type application/javascrpt

}

反向代理域名备案访问

server {
listen       80;
server_name  www.xxx.com;
location / {
# 代理转发指定
proxy_pass http://192.168.50.12/;
}
}

ssl

http(超文本传输协议)转https(超文本传输完全协议)

server {
# 监听端口 开启ssl模式
    listen       443 ssl;
# 访问名称 - 域名
    server_name  www.xx.com;
# pem文件位置
    ssl_certificate      /xxxx/cert.pem;
# key文件位置
    ssl_certificate_key  /xxxx/cert.key;
# ssl证书缓存
    ssl_session_cache    shared:SSL:1m;
# 操作时间
    ssl_session_timeout  5m;

# 加密算法
    ssl_ciphers  HIGH:!aNULL:!MD5;
# 服务端的首选算法是否开启
    ssl_prefer_server_ciphers  on;

    location / {
        root   html;
        index  index.html index.htm;
    }
}

限流

1>请求限流,漏洞算法

http {
# 开辟空间 $binary_remote_addr主机名称; zone空间名; rate限速;
limit_req_zone $binary_remote_addr zone=ip_limit:10m rate=1r/s;
# 省略其他代码
service{
# 省略其他代码
location /{
# burst爆发
limit_req zone=ip_limit burst=2;
}
}
}

2>链接限流,令牌桶算法

http {
# 开辟空间 $binary_remote_addr主机名称; zone空间名; rate限速;
limit_conn_zone $binary_remote_addr zone=conn_limit:10m;
#  省略其他代码
service{
#  省略其他代码
location /{
# 限制连接
limit_conn conn_limit 1;
}
}
}

合并请求(优化)

  • 下载三方模块包
git clone https//github.com/alibaba/nginx-http-concat.git
# 加速镜像
git clone https//gitclone.com/github.com/alibaba/nginx-http-concat.git
  • 加载模块
#  配置
sudo ./configure --prefix=/home/nginx --with-http_ssl_module --add-module=/opt/nginx-http-concat
# 编译
sudo make
# 替换执行文件
sudo mv ./objs/nginx  /home/nginx/sbin/nginx
  • 配置参数(http、serrvice、location )

server {
# 开启合并请求
concat on;
# 定义最大能接受文件数量
concat_max_files 20;
# 如果开启返回400 未开启合并两个文件
concat_unique on;
# 定义那些文件可以合并
concat_type application/javascript;
# 文件之间分割
concat_delimiter '\n';
# 文件不存在权限提示
concat_ignore_file_error on;

# 监听端口 开启ssl模式
    listen       443 ssl;
# 访问名称 - 域名
    server_name  www.xx.com;
# pem文件位置
    ssl_certificate      /xxxx/cert.pem;
# key文件位置
    ssl_certificate_key  /xxxx/cert.key;
# ssl证书缓存
    ssl_session_cache    shared:SSL:1m;
# 操作时间
    ssl_session_timeout  5m;

# 加密算法
    ssl_ciphers  HIGH:!aNULL:!MD5;
# 服务端的首选算法是否开启
    ssl_prefer_server_ciphers  on;

    location / {
        root   html;
        index  index.html index.htm;
    }
}

原文地址:https://blog.csdn.net/qq_34915141/article/details/142755320

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!