`

Nginx常用功能详解

 
阅读更多

NGiNX 是个非常优秀的HTTP 服务器软件,可以通过设置有实现许多功能,如目录保护、IP访问限制、防盗链、下载限速及设置多域名等等

 

一、NGINX目录保护及访问限制

Nginx保护目录的配置如下,目录密码保护文件是 /usr/local/nginx/htpasswd

location ~ /admin {

#admin为要保护的目录名称,location 的意思就是保护从网页根目录算起的admin 目录

auth_basic     ”PLEASE LOGIN”;      #就是进入资料夹时会显示的信息

auth_basic_user_file /usr/local/nginx/htpasswd; #验证用户及密码文件,我这边设定是放在 /usr/local/nginx/htpasswd

}

location ~ \.php$ {

fastcgi_pass 127.0.0.1:9000;

fastcgi_index index.php;

fastcgi_param SCRIPT_FILENAME /var/www/bbs$fastcgi_script_name;

include    fastcgi_params;

}

注意,设置目录密码保护时,请注意配置区块的位置,如果放在location ~ \.php$ {}区块后面,如果打开的是静态页面或图片等非php文件,会提示要输入密码,但是,如果打开的是php文件,则设置无效,会直接执行php文件并显示。因此,一定要注意把要设置目录密码保护的区块放在location ~ \.php$ {}区块之前。

生成密码文件:

htpasswd -b -c /usr/locla/nginx/htpasswd username password;

二、NGINX防盗链

另外 NGiNX 防盗链,防止别人偷图(视频、flash、软件…)当然也是 OK 滴!  一样也是在 server 的区段加上

location ~* \.(txt|ico|gif|png|bmp|jpg|jpeg|zip|rar|gz|7z|exe|mp3|flv|swf)$ {

valid_referers none blocked jb51.net www.jb51.net ;

if ($invalid_referer) {

rewrite ^/ http://www.jb51.net/notlink.html;

}

}

这时候 location 的意思就是保护从网页根目录算起,所有的指定类型的文件都依照此规则

valid_referers none blocked 的意思就是不阻挡从哪些地方来的囉~ 这边以空格来分隔允许的域名或 ip 位置

$invalid_referer 的意思就是不允许连结

rewrite ^/ http://www.jb51.net/notlink.html; 的意思就是指定不允许的连结自动转向到一个页面,或是已经有设定 404 转址的也可以先注解掉这行再把 #return 404 的注解拿掉,就会自动跑到你设定的 404 页面了。

特别提醒:如何来看防盗链是否是生效的,建议大家直接看服务日志,不要拿个网站来测试。因为有些不要脸的家伙(比如某度),他会用自己的图片服务器来提供服务。就是因为这个原因,上一次我在做这个的时候,浪费了很多时间。

三、NGINX下载限速

NGiNX 还能限速再限制下载线程!  先在 http 区段找到 limit_zone,再把注释拿掉~

# 设定一个叫做 crawler 的区域,大小为 20MB

limit_zone crawler $binary_remote_addr 20m;

然后在 server 的区段加上

# 限制档案类型只能单线下载

location ~ .*\.(zip|rar|gz|tar|exe|mp3|flv|swf|jpg|jpeg)$

{

limit_conn crawler 1;

limit_rate 500k; # 再加上限速

}

# 限制特定资料夹底下只能单线下载

# location /download/ {

# limit_conn crawler 1;

# limit_rate 500k; # 再加上限速

# }

四、NGINX多域名设置

今天在配置PHP+Nginx时出现一个严重的问题,在Nginx虚拟主机上绑定了泛域名,在程序中需要用二级域名指向不同的内容,但无论如何访问都只跳转到主域名上!为了找到问题,一个一个试验,得出如下结论:不管绑定多少域名,用 $_SERVER["SERVER_NAME"] 只会返回虚拟主机中绑定的第一个域名!

比如绑定域名如下:

server_name     www.jb51.net *.jb51.net jb51.net

现在我不管用什么域名访问, $_SERVER["SERVER_NAME"] 都只会返回 www.jb51.net !!这是个很严重的问题,对泛域名造成了致命的影响!

既然有问题,就肯定有解决方案。。在wiki主翻了N久,终于找到了需要的资料!原来:$_SERVER["SERVER_NAME"] 返回的值是由 Nginx 的 fastcgi_param 中 SERVER_NAME 提供的,而默认的配置为:

fastcgi_param  SERVER_NAME    $server_name;

Nginx中 $server_name 变量就是上面设置的域名,只会返回第一个!

这下好办了,把上面的配置改成:

fastcgi_param  SERVER_NAME    $host;

就行了。

另外还需要在server_name配置后面加一行:

server_name_in_redirect off;

意思是 让 nginx 在处理自己内部重定向时不默认使用  server_name 设置中的第一个域名!

内容来源于 小红提技术博客,http://www.xiaohongti.com/ 转载请保留地址,尊重版权。

分享到:
评论

相关推荐

    Nginx高性能Web服务器详解(完整版)pdf下载

    Nginx是一款高性能的Web服务器,它以其反向代理、负载均衡、静态文件处理和高效非...通过阅读《Nginx高性能Web服务器详解(完整版)》PDF文档,你将全面了解Nginx的各项特性和配置技巧,进一步提升你的运维和开发能力。

    nginx1.19.1以及常用配置文档.zip

    **Nginx 1.19.1及常用配置文档详解** Nginx是一款高性能的Web服务器和反向代理服务器,被广泛应用于互联网行业,以其轻量级、高并发处理能力而著称。Nginx 1.19.1是Nginx的最新稳定版本,它在1.19.0的基础上进行了...

    Nginx高性能Web服务器详解.pdf

    此外,Nginx的模块化设计允许用户根据需求灵活扩展功能,例如添加SSL/TLS支持、缓存模块、限速模块等。 书中会详细讲解Nginx的安装与配置,包括基础配置文件结构、常用指令解析,以及如何进行模块定制。读者还将...

    Nginx常用模块及作用.docx

    以上就是Nginx中一些核心模块的详解,这些模块的组合使用使得Nginx能胜任各种复杂的Web服务场景,包括静态内容服务、动态内容处理、负载均衡、安全防护等。了解并熟练运用这些模块,能更好地优化和管理Nginx服务器,...

    Nginx高性能Web服务器详解

    **Nginx高性能Web服务器详解** Nginx是一款开源、高性能、轻量级的Web服务器和反向...通过阅读《Nginx高性能Web服务器详解》这份资料,你将能够全面了解Nginx的强大功能和最佳实践,提升你在Web服务领域的专业技能。

    nginx1.24.0 windows版

    Nginx 在Windows平台上的版本与在Linux等其他操作系统上的功能基本一致,但可能需要额外的配置来适应Windows环境。 1. **Nginx 的核心功能**: - **静态文件服务**:Nginx 非常擅长处理静态资源请求,如HTML、CSS...

    nginx服务器安装及配置文件详解.pdf

    Nginx配置文件详解** nginx的主配置文件一般位于安装目录的conf目录下,文件名通常为nginx.conf。通过修改这个配置文件可以定制nginx服务器的行为。 nginx配置文件通常由几个主要部分组成:main(全局设置)、...

    中间件调研报告.docx

    **1.3 Nginx常用功能详解** - **1.3.1 HTTP代理(正向代理)和反向代理** - **正向代理**:正向代理是一种位于客户端和原始服务器之间的服务器,客户端通过向代理发送请求来获取内容。在这种情况下,客户端指定了...

    nginx文档.zip

    "深入 Nginx 之配置篇" 和 "Nginx的几个常用配置和技巧" 详细介绍了Nginx的高级配置,如错误页定制、限速策略、访问控制、日志管理等。同时,也会探讨如何优化Nginx的性能,例如通过调整worker进程数量、开启HTTP/2...

    nginx 使用及配置文件

    #### 四、Nginx常用命令 给定的文件片段展示了Nginx的一些常用管理脚本,如`restart.bat`、`start.bat`和`shutdown.bat`,这些脚本在Windows环境中用于启动、停止和重启Nginx服务。具体操作包括: - `tskill nginx...

    nginx+中文文档

    3. **配置详解**:解析`nginx.conf`配置文件的各个部分和常用指令。 4. **实战案例**:提供常见应用场景的配置示例,如反向代理、负载均衡等。 5. **故障排查**:分享常见问题及解决方法。 通过学习和实践,开发者...

    nginx-1.17.9_nginx_

    **Nginx 1.17.9:高效负载均衡与Web服务器详解** Nginx 是一款高性能的 Web 服务器和反向代理服务器,广泛应用于互联网行业,尤其在处理高并发场景时表现出色。Nginx 1.17.9 版本是其稳定版本之一,提供了一套优化...

    nginx安装包

    五、Nginx常用指令 1. `nginx -s reload`:重新加载配置文件,不中断当前服务。 2. `nginx -t`:检查配置文件的语法错误。 3. `nginx -s stop`:快速停止Nginx服务。 4. `nginx -s quit`:优雅地停止Nginx服务,等待...

    Nginx安装包(包含Windows和Linux环境安装包)

    五、Nginx常用指令 - `nginx -s quit`:平滑关闭Nginx。 - `nginx -s stop`:快速停止Nginx,不等待工作进程结束。 - `nginx -t`:检查配置文件的语法是否正确。 - `nginx -v`:显示Nginx版本信息。 - `nginx -V`:...

    nginx离线安装包

    **Nginx 离线安装包详解** 在IT领域,服务器端的高效运行是至关重要的,而Nginx作为一款高性能的Web服务器和反向代理服务器,因其稳定性高、资源消耗低、并发能力强等特点,被广泛应用于各种互联网服务中。离线...

    linux下的nginx部署

    #### 十、Nginx常用命令 1. **停止服务**:`#./nginx -s stop` 2. **重新加载配置**:`#./nginx -s reload` 3. **查看Nginx版本**:`#./nginx -v` 4. **停止进程**:`#kill -QUIT 主进程号` 5. **快速停止**:`#...

    nginx-1.20.2.zip

    **Nginx 1.20.2:高性能Web服务器与反向代理详解** Nginx 1.20.2是Nginx Web服务器的一个特定版本,它以其高性能、稳定性以及对高并发处理能力而著称。Nginx采用事件驱动的异步非阻塞模型,能够有效地处理大量并发...

    nginx-http-flv-module-1.2.10(包含nginx-rtmp-module)

    它支持基本的RTMP操作,如连接、发布、播放、弹出数据包,还支持HLS切片和录制功能,使得Nginx能够作为一个完整的流媒体服务器运行。 3. **运维相关知识** 在实际运维中,配置Nginx-http-flv-module和nginx-rtmp-...

Global site tag (gtag.js) - Google Analytics