Nginx只允许Get/Post请求,快速响应Head请求

最近网站开始有一些奇怪的请求

出于安全考虑,决定只允许Get/Post请求。

在Nginx配置文件中添加任意一个即可:

#方法一
if ($request_method !~ ^(GET|POST)$ ){
    return 403;
}

#方法二
if ($request_method !~* GET|POST) {
    return 403;
}
#快速响应Head请求
if ($request_method ~ ^(HEAD)$ ) {
    return 200 "All OK";
}

Nginx配置网站HTTPS(ssl)

下面是在Nginx配置网站HTTPS(ssl)的参数

请酌情修改使用。

注意:TLS 1.1 协议预计将2020年3月份正式“退役”,详情点击 这里
server
{
    #监听443端口、ssl、http2
    listen 443 ssl http2 ;
    
    #启用ssl
    ssl on;
    
    #证书配置
    ssl_certificate    /idzd.top.pem;
    ssl_certificate_key    /idzd.top.pem;
    
    #支持的协议
    ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
    
    #支持的加密套件
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
    
    #依赖SSLv3和TLSv1协议的服务器密码将优先于客户端密码
    ssl_prefer_server_ciphers on;
    
    #设置储存SSL会话的缓存类型和大小
    ssl_session_cache shared:SSL:10m;
    
    #客户端能够反复使用储存在缓存中的会话参数时间
    ssl_session_timeout 10m;

}

U8g2初始化(如何选择oled构造函数)

注意:U8g2不支持“无控制器”屏幕

U8g2驱动库构造函数

U8g2驱动库构造函数格式如下:

U8G2\_ 屏幕控制器型号 \_ 分辨率 \_ 显示名称 \_ 缓冲模式(1,2,F) \_ 通讯方式 u8g2( 参数 );


例如:

//SSD1306,128x64,全屏缓冲模式,模拟I2C,I2C,u8g2(旋转0度,时钟,数据,重置)
U8G2_SSD1306_128X64_NONAME_F_SW_I2C u8g2(U8G2_R0, /* clock=*/ SCL, /* data=*/ SDA, /* reset=*/ U8X8_PIN_NONE);

你可以点击这里查看已支持的显示控制器构造函数

防止恶意解析网站

对方把自己的域名恶意解析到你网站服务器的IP上,从而达到某些目的。

其中最关键的前提就是 你的网站直接访问ip就可以显示

说白了,解决思路就是禁止ip直接访问到网站

修改配置文件就行

server {
    listen 80 default_server;
    listen 443 default_server;
    server_name _;
    #https的证书
    ssl_certificate   cert/idzd.top.pem;
    ssl_certificate_key  cert/idzd.top.key;
    #关闭日志
    access_log off;
    
    #下面这仨任选一个就行,我是返回444
    #返回403
    return 403;
    #返回444,这是Nginx自己一个响应,直接关闭连接,啥都不回应
    return 444;
    #返回301
    return 301 https://www.idzd.top$request_uri;
}

Nginx 设置HTTP 301重定向到HTTPS

前几天一直在折腾网站的HTTPS,毕竟HTTP容易被劫持。

但是,一般输入域名,很少有人带上http://https://,而浏览器一般默认访问http站点。

所以需要设置HTTP 301重定向到HTTPS。

ps:当初百度HTTPS认证恶心到我了

在Nginx配置文件里添加以下任意一种就行:

#方法1,凡是80端口的都301
server {
    listen 80;
    server_name idzd.top www.idzd.top;
    return 301 https://www.idzd.top$request_uri;
}

##其他的同时监听80、443端口的配置(比如宝塔面板)
server
{
    listen 80;
    listen 443 ssl http2; 
    server_name idzd.top www.idzd.top;    
    
    #方法2,判断443端口
    if ($server_port !~ 443){ return 301 https://www.idzd.top$request_uri;}
    #方法3,判断80端口
    if ($server_port = 80 ) {return 301 https://www.idzd.top$request_uri; }    
    #方法4,判断协议
    if ($scheme = http ) {return 301 https://www.idzd.top$request_uri; }   
    #方法5,判断ssl附加数据
    if ($ssl_protocol = "") { return 301 https://www.idzd.top$request_uri; }
    #方法6,判断域名(需要和其他方法搭配)
    if ($host != 'www.idzd.top') {return 301 https://www.idzd.top$request_uri; }

    #部分配置省略,请勿照搬!
}