封禁 IP

  • 通过 deny 可以封禁指定 IP
http {
# ....
# 封禁IP
deny 192.168.4.3;
deny 31.42.145.0/24;
deny 51.12.35.0/24;
}

仅开放内网

  • 需要先禁止 192.168.1.1
  • 开放其他内网网段,然后禁止其他所有 IP
location / {
# block one workstation
deny 192.168.1.1;
# allow anyone in 192.168.1.0/24
allow 192.168.1.0/24;
# drop rest of the world
deny all;
}

负载均衡

  • 需要在 nginx.conf 中配置转发服务器信息
  • 权重: weight=1,权重如果分配的值越大,权重越高
  • 最大连接数: max_fails=3,最多连接失败次数为3次
  • 连接失败时间: fail_timeout=20s,每次连接失败的时间
  • 在站点配置 default.conf 中开启负载均衡
# nginx.conf中配置转发服务器信息
upstream web {
server 192.168.37.2 weight=1 max_fails=3 fail_timeout=20s;
server 192.168.37.3 weight=1 max_fails=3 fail_timeout=20s;
} # default.conf中开启负载均衡
location / {
proxy_pass http://web/;
}

列出文件列表

  • 有时候服务器作为资源服务器,给用户提供下载资源使用
  • 需要将服务上的文件以目录形式列出来
  • 可以通过配置 autoindex on 允许列出目录,启用目录流量
  • 可以通过 autoindex_exact_size off 显示出文件的确切大小,单位是 bytes
  • 可以通过 autoindex_localtime on 显示的文件时间为文件的服务器时间
location / {
autoindex on;
autoindex_exact_size on;
autoindex_localtime on;
}

路由转发

  • 有时候用户通过路由访问服务器的资源,其实你的资源在另一个文件夹下面
  • 可以使用 alias 命令,将用户请求进行转发
# nginx服务器
location /static {
alias /public;
} # window服务器
location ^~ /static {
alias "D:\\public\\静态资源";
}

开启 gzip 压缩

  • gzip 压缩是一种提升访问速度的优化方向,可以大大提高
http {
# 开启gzip
gzip on; # 是否在http header中添加Vary: Accept-Encoding,建议开启
gzip_vary on; # 启用gzip压缩的最小文件,小于设置值的文件将不会压缩
gzip_min_length 1k; gzip_proxied any; # gzip 压缩级别,1-9,数字越大压缩的越好,也越占用CPU时间
gzip_comp_level 6; # 设置压缩所需要的缓冲区大小
gzip_buffers 16 8k; # 设置gzip的版本
gzip_http_version 1.1; # 进行压缩的文件类型。javascript有多种形式,后面的图片压缩不需要的可以自行删除
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
}

解决跨域

server {
location / {
#允许跨域请求的域,*代表所有
add_header 'Access-Control-Allow-Origin' *;
#允许带上cookie请求
add_header 'Access-Control-Allow-Credentials' 'true';
#允许请求的方法,比如 GET / POST / PUT / DELETE
add_header 'Access-Control-Allow-Methods' *;
#允许请求的header
add_header 'Access-Control-Allow-Headers' *;
}
}

资源防盗链

  • 为了防止其他网站直接实用我方的静态资源,可以增加防盗链配置
server {
location ~*/(js|image|css) {
# 检测*.autofelix.cn的请求,如果检测是无效的,直接返回403
valid_referers *.autofelix.cn;
if ($invalid_referer) {
return 403;
}
}
}

Keepalived 提高吞吐量

  • 通过 keepalived 可以设置长连接处理的数量
  • 通过 proxy_http_version 可以设置长连接 http 版本
  • 通过 proxy_set_header 可以清除 connection header 信息
# nginx.conf中配置吞吐量
upstream web {
server 192.168.37.3 weight=1;keepalive 32;
} # default.conf中配置
location / {
proxy_pass http://tomcats;
proxy_http_version 1.1;
proxy_set_header Connection "";
}

HTTP 强制跳转 HTTPS

  • 很多网站中,都强制实用 https 协议
  • 这样我们就需要将 http 强制跳转到 https
server {
# 监听的端口号
listen 80; # 强制跳转
rewrite ^(.*)$ https://$host$1 permanent;
} server {
# 监听的端口号
listen 443;
# 主机名
server_name www.520web.cn;
# 开启ssl验证
ssl on;
# 字符集
charset utf-8;
# 访问的根目录
root /var/www/html;
# 错误页面
error_page 404 ...404文件路径; # 图片视频静态资源缓存到客户端时间
location ~ .*\.(jpg|jpeg|gif|png|ico|mp3|mp4|swf|flv){
expires 10d;
} # js/css静态资源缓存到客户端时间
location ~ .*\.(js|css){
expires 5d;
} # ssl的相关配置,pem文件的地址
ssl_certificate ...pem文件的绝对路径;
# key文件的绝对路径
ssl_certificate_key ...key文件的绝对路径;
# 断开重连时间
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
# ssl协议
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on; # 首页访问的文件
location / {
index index.php index.html index.htm;
} # php-ftm配置
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}

编程技巧│超实用 nginx 中常见的配置合集的更多相关文章

  1. Nginx中虚拟主机配置

    一.Nginx中虚拟主机配置 1.基于域名的虚拟主机配置 1.修改宿主机的hosts文件(系统盘/windows/system32/driver/etc/HOSTS) linux : vim /etc ...

  2. SecureCRT 下载,安装,绝佳配色,实用配置,上传下载配置合集

    SecureCRT 下载,安装,绝佳配色,实用配置,上传下载配置合集 chocoball 发布于 2年前,共有 3 条评论 SecureCRT 是一款支持 SSH2.SSH1.Telnet.Telne ...

  3. Nginx中的安全配置

    1.测试环境 操作系统:CentOS6.5 Web服务器:Nginx1.4.6 Php版本:Php5.4.26 2.Nginx介绍 1.nginx本身不能处理PHP,它只是个web服务器,当接收到请求 ...

  4. 学习计划 nginx 中 php的配置详解

    本章只看一个刚下载的nginx是如何支持php的 -- location ~ \.php$ { root html; fastcgi_pass 127.0.0.1:9000; fastcgi_inde ...

  5. nginx中的超时配置

    nginx.conf配置文件中timeout超时时间设置 client_header_timeout 语法 client_header_timeout time默认值 60s上下文 http serv ...

  6. Nginx中超时时间配置(转)

    本文介绍 Nginx 的 超时(timeout)配置.分享给大家,具体如下: Nginx 处理的每个请求均有相应的超时设置.如果做好这些超时时间的限定,判定超时后资源被释放,用来处理其他的请求,以此提 ...

  7. nginx中常见的变量

    $arg_PARAMETER        客户端GET请求PARAMETER的值. $args     请求中的参数. $binary_remote_addr 二进制码形式的客户端地址. $body ...

  8. 【编程技巧】EXTJS中Ext.grid.GridPanel配置项autoExpandColumn的使用方法

    autoExpandColumn的作用是自动伸展,占满剩余区域.一般使用在列比较少,并且大多数列都比较窄,有一列比较宽的情况下,当然什么时候使用,还是得按照实际情况确定. 使用的时候主要有三点要注意的 ...

  9. Nginx中Laravel的配置

    server { listen 80; server_name sub.domain.com; set $root_path '/var/www/html/application_name/publi ...

随机推荐

  1. Windows下查找各类游戏存档路径

    我算是个比较爱打单机游戏的人,同时也是个半吊子的编程爱好者,有的时候会去干一些修改存档的事儿.不过这篇博文不讲存档修改技术,只讲第一步:去哪找存档? 目标:在windows10系统下搜索到游戏的存档路 ...

  2. 简单的TRPG骰子

    又到了新一年的带团季了,今年准备用电脑来存放各种资料,自然也是需要一个简单的骰子工具了,反正也不复杂,就自己写了个,放着做个备份吧 主要功能是计算x1dy1+/-x2dy2+/-.....+/-con ...

  3. SpringJdbcTemplate简单实现

    SpringJdbcTemplate 配置文件 1.依赖坐标 <dependencies> <dependency> <groupId>javax.servlet& ...

  4. [笔记] 2-sat

    定义 简单的说就是给出 \(n\) 个集合,每个集合有两个元素,已知形如选 \(a\) 则必须选 \(b\) 的若干个条件, 问是否存在从每个集合选择一个元素满足条件的方案,通常可以题目只要求任意一种 ...

  5. HttpResponse,render,redirect,静态文件配置,request对象方法,pycharm连接MySQL,django连接MySQL,django ORM

    HttpResponse 主要用于返回字符串类型的数据 def index(request): return HttpResponse('index页面') 在页面中就会显示 index页面 rend ...

  6. MPLS基础与工作原理

    MPLS Fundamental History of WAN Protocol 1970年代之前 第一个 WAN 用于将办公室与终端连接到大型机和小型计算机系统. 它是从办公室到数据中心的点对点连接 ...

  7. windows 10 21H1 顶部任务栏点击音量或其他图标不出弹框

    右键任务栏,按照图片中描述操作

  8. 203. Remove Linked List Elements - LeetCode

    Question 203. Remove Linked List Elements Solution 题目大意:从链表中删除给定的数 思路:遍历链表,如果该节点的值等于给的数就删除该节点,注意首节点 ...

  9. CF1682D Circular Spanning Tree

    题意: 构造题,节点1~n顺时针排列成圆形,告诉你每个点度数奇偶性,让你构造一棵树,树边不相交. 思路: 因为每条边给总度数贡献2,因此如果度数为1的点有奇数个,直接输出no.显然0个度数为1的,也输 ...

  10. uniapp小程序webSocket封装使用

    目录 1,前言 2,代码实现 3,使用 3.1,初始化 3.2,发送消息 3.3,接收消息 1,前言 最近在做IOT的项目,里面有个小程序要用到webSocket,借这个机会,封装了一个uniapp小 ...