博客
关于我
LNMP架构(Nginx防盗链、Nginx访问控制、Nginx解析php相关配置、Nginx代理)
阅读量:793 次
发布时间: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/

    你可能感兴趣的文章
    LoadRunner性能测试基本步骤
    查看>>
    loadrunner手动生成脚本函数
    查看>>
    LoadRunner测试下载文件
    查看>>
    Loadrunner脚本编程(4)-数据类型操作和字符串操作
    查看>>
    LoadRunner运行中的mmdrv和mdrv
    查看>>
    load和DOMContenLoaded的区别
    查看>>
    Lobe-Chat Docker重启后注册选项自动启用?一键脚本部署后的解决方法
    查看>>
    Lobe-Chat无法使用英伟达DeepSeek模型的解决方法
    查看>>
    LobeChat 通过环境变量实现配置功能控制指南
    查看>>
    LobeChat如何通过URL链接分享配置参数教程
    查看>>
    LobeChat配置OPENAI_PROXY_URL返回空值,如何解决?
    查看>>
    LocalDateTime处理
    查看>>
    localhost 目前无法处理此请求。 HTTP ERROR 500
    查看>>
    localhost与127.0.0.1,本地主机与IP地址之争!
    查看>>
    localhost:5000在MacOS V12(蒙特利)中不可用
    查看>>
    locals 和 globals
    查看>>
    localStorage使用总结
    查看>>
    location.href的几种用法
    查看>>
    location.href表示当前访问的网址url
    查看>>
    location优先级别问题
    查看>>