博客
关于我
LNMP架构(Nginx防盗链、Nginx访问控制、Nginx解析php相关配置、Nginx代理)
阅读量:801 次
发布时间:2023-02-06

本文共 2201 字,大约阅读时间需要 7 分钟。

Nginx防盗链及访问控制配置详解

Nginx防盗链

防止网站资源被非法引用是每个网站管理员的重要任务之一。Nginx提供了一种简单有效的防盗链解决方案,以下是详细的配置步骤。

1. 配置防盗链

编辑虚拟主机文件/usr/local/nginx/conf/vhost/test.com.conf,在location块中添加以下配置:

location ~* ^.+\.(gif|jpg|png|swf|flv|rar|zip|doc|pdf|gz|bz2|jpeg|bmp|xls) {    expires 7d;    valid_referers none blocked server_names *.test.com;    if ($invalid_referer) {        return 403;    }    access_log off;}

2. 配置文件检查与重新加载

执行以下命令确保配置无误并重新加载:

/usr/local/nginx/sbin/nginx -t/usr/local/nginx/sbin/nginx -s reload

3. 测试防盗链

使用curl命令测试引用的效果:

curl -e "http://www.baidu.com/123.txt" -x127.0.0.1:80 -I test.com/test.jpg

若返回403 Forbidden,说明防盗链配置成功。


Nginx访问控制

###需求仅允许特定IP访问/admin/目录,防止一句话木马攻击。

###配置步骤

编辑虚拟主机文件/usr/local/nginx/conf/vhost/test.com.conf,添加以下配置:

location /admin/ {    allow 192.168.248.129; # 允许特定IP访问    allow 127.0.0.1; # 允许本地访问    deny all; # 否则拒绝访问}

注意事项

  • 配置中的allowdeny规则按顺序执行,allow优先于deny
  • 确保目标服务器的防火墙规则开放了80端口。

测试步骤

  • 在Windows机器中:

    • 配置hosts文件。
    • 打开防火墙端口:iptables -I INPUT -p tcp --dport 80 -j ACCEPT
  • 使用浏览器访问http://test.com/admin/,若未授权IP访问将返回403 Forbidden。

  • 查看Nginx日志:cat /tmp/test.com.log,确认被拒绝访问的IP地址。


  • Nginx解析PHP配置

    1. 配置解析PHP

    编辑虚拟主机文件/usr/local/nginx/conf/vhost/test.com.conf,添加以下配置:

    location ~ \.php$ {    include fastcgi_params;    fastcgi_pass unix:/tmp/php-fcgi.sock;    fastcgi_index index.php;    fastcgi_param SCRIPT_FILENAME /data/wwwroot/test.com$fastcgi_script_name;}

    2. 配置文件检查与重新加载

    执行以下命令:

    /usr/local/nginx/sbin/nginx -t/usr/local/nginx/sbin/nginx -s reload

    3. 测试502错误

    使用curl测试:

    curl -x127.0.0.1:80 test.com/test0816.php

    若返回502 Bad Gateway,需检查php-fpm配置文件/etc/php-fpm.conf,确保listen设置正确。


    Nginx代理配置

    1. 创建代理配置文件

    进入/usr/local/nginx/conf/vhost/目录,创建新文件proxy.conf

    server {    listen 80;    server_name ask.apelearn.com;        location / {        proxy_pass http://223.94.95.10/;        proxy_set_header Host $host;        proxy_set_header X-Real-IP $remote_addr;        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;    }}

    2. 配置文件检查与重新加载

    执行以下命令:

    usr/local/nginx/sbin/nginx -tusr/local/nginx/sbin/nginx -s reload

    3. 测试代理效果

    使用curl命令测试:

    curl -x127.0.0.1:80 ask.apelearn.com/robots.txt

    拓展

    502问题汇总

    • 确保php-fpm服务正常运行。
    • 检查nginx错误日志:tail -f /tmp/nginx.log

    location优先级

    location块的匹配顺序至关重要,^~优先于~*.*优先于.*.(ext)

    转载地址:http://eyufk.baihongyu.com/

    你可能感兴趣的文章
    Nessus漏洞扫描教程之配置Nessus
    查看>>
    Nest.js 6.0.0 正式版发布,基于 TypeScript 的 Node.js 框架
    查看>>
    nested exception is org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML.
    查看>>
    nestesd exception is java .lang.NoSuchMethodError:com.goolge.common.collect
    查看>>
    nestJS学习
    查看>>
    net core 环境部署的坑
    查看>>
    NET Framework安装失败的麻烦
    查看>>
    Net 应用程序如何在32位操作系统下申请超过2G的内存
    查看>>
    Net.Framework概述
    查看>>
    NET3.0+中使软件发出声音[整理篇]<转>
    查看>>
    net::err_aborted 错误码 404
    查看>>
    NetApp凭借领先的混合云数据与服务把握数字化转型机遇
    查看>>
    Netbeans 8.1启动参数配置
    查看>>
    NetBeans IDE8.0需要JDK1.7及以上版本
    查看>>
    NetBeans之改变难看的JSP脚本标签的背景色...
    查看>>
    netbeans生成的maven工程没有web.xml文件 如何新建
    查看>>
    netcat的端口转发功能的实现
    查看>>
    netfilter应用场景
    查看>>
    Netgear WN604 downloadFile.php 信息泄露漏洞复现(CVE-2024-6646)
    查看>>
    netlink2.6.32内核实现源码
    查看>>