nginx 增强安全性和避免不必要的跳转 – 关闭默认站点

引言

Nginx是一个高性能的HTTP和反向代理服务器,广泛用于Web服务中。在部署Nginx时,我们可能需要关闭默认站点和空主机头,以增强安全性和避免不必要的跳转。

今天,简单聊下在 nginx 上如何禁止IP直接访问、防止域名恶意解析、防止多站点在同一个服务器上,错误跳转。

注意哈,不是你跟着我敲就行的,不同情况不同对待,特别是某些小白你用的那种一键安装的脚本,看见我就头疼。

关闭默认站点

默认站点是Nginx在没有找到匹配的服务器块时会使用的配置。关闭默认站点可以防止用户通过IP直接访问服务器,从而增强安全性。

什么意思,比如你的服务器ip 192.168.1.1 上面跑了两个站,一个叫test.example.com , 一个叫abc.example.com,那你现在是不是这两个域名都是A记录到了192.168.1.1?

那我不通过域名,直接访问192.168.1.1,返回的那个网页内容就是我的默认网站。

比如我nginx配置了

http {
    # 如果没有在代码中声明 default server 则按照代码顺序,
    # 第一个 server 会被隐式的设为 default server
    # 参考:https://segmentfault.com/a/1190000015681272

    # 我下面配置了default,那这个第一个就不是default,那我先注释掉这一段。

    #server {
    #    listen 80;
    #    server_name _; # _ 并不是重点 __ 也可以 ___也可以
    #    return 403; # 403 forbidden
    #}

    server {
        listen 80;
        server_name test.example.com;
        ...
    }

    server {
        listen 80;
        server_name abc.example.com;
        ...
    }

    # 定义一个 default server,这样就不是默认第一个为 default,
    # 因为这配置文件,你也可能搞不懂哪个在前,哪个在后面的这种狗屁顺序。
    # 小记:nginx 批量载入配置 conf 时会按 ascii 排序载入,
    # 这就会以 server_a.conf server_b.conf server_c.conf 的顺序载入,
    # 如果没有声明 default_server 的话
    # 那 server_a 会作为默认的 server 去处理 未绑定域名/ip 的请求。
    # 所以为了避免这种情况,我建议你规范配置。
    server {
        listen 80 default_server;
        server_name _;
        return 403; # 403 forbidden
    }
}

好,上面这个配置文件的意思就是test.example.comabc.example.com正常访问,但是直接访问我那个ip192.168.1.1就403。懂了不。

所以关闭了默认站点,就避免被发现ip或者通过ip访问造成某些不必要的操作。

步骤一:定位默认站点配置

默认站点通常在Nginx的配置文件中定义。在Ubuntu系统中,这个文件通常位于/etc/nginx/sites-available/default

步骤二:修改配置文件

  1. 打开配置文件:

    sudo vim /etc/nginx/sites-available/default
  2. 找到listen指令,并视情况注释掉或删除它:

    # listen 80;
    # 不要盲目蛮干
  3. 保存并退出编辑器。

步骤三:重载Nginx配置

sudo nginx -s reload

禁止空主机头

空主机头指的是没有指定域名的服务器块。禁止空主机头可以防止域名恶意解析和多站点间的莫名跳转。

步骤一:检查现有配置

检查Nginx配置文件,查找是否有没有指定server_nameserver块。

步骤二:修改配置

  1. 打开Nginx配置文件:

    sudo vim /etc/nginx/nginx.conf
  2. http块中,确保所有的server块都有明确的server_name指令:

    server {
       listen 80;
       server_name example.com;
       ...
    }
  3. 删除或注释掉所有没有server_nameserver块。

提示,这段是AI生成的,我感觉他说的不完全对,某些一键脚本他就是没有server_name这段,那你删了不就没办法工作了哦,有问题你在我博客下面留言吧。

步骤三:重载Nginx配置

sudo nginx -s reload

增强安全性的额外措施

使用SSL/TLS

为站点启用SSL/TLS加密可以提高安全性,防止数据在传输过程中被窃取。

配置防火墙

使用防火墙规则限制访问,只允许来自特定IP或特定端口的访问。


注意: 本文提供的步骤和指令可能需要根据你的操作系统和Nginx安装方式进行适当的调整。

版权声明:本文由mxd's Blog发布,如需转载请注明出处。
如果文章中有风险行为,文章作者不负任何责任。
除非另有说明,否则本站内容依据CC BY-SA 4.0许可证进行授权,转载请附上出处链接。

本文链接:https://blog.mxdyeah.top/mxdyeah_blog_post/nginx-enhances-security-01.html
本文标题:nginx 增强安全性和避免不必要的跳转 – 关闭默认站点

评论

  1. 李正恩
    Android Chrome 129.0.0.0
    2 月前
    2024-10-04 12:18:16

    事实上没什么必要,现在都用面板

    • 博主
      李正恩
      Linux Edge 129.0.0.0
      2 月前
      2024-10-04 20:06:05

      配置低的服务器,安装不了面板,只能手动配置。
      还有一部分因为各种原因只能手动配置的
      对于大部分人来说,还是很有用的~

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇