关闭 Nginx 资源列表功能的方法

学习如何在 Nginx 中关闭目录列表功能,以提高网站安全性和隐私保护。通过修改配置文件中的设置,您可以轻松地禁用 Nginx 的目录列表功能。本文将介绍步骤和相关代码示例,帮助您实现这一目标。 1. 打开 Nginx 的配置文件 首先,您需要打开 Nginx 的配置文件。根据默认安装设置,配置文件位于 /etc/nginx/nginx.conf 或 /etc/nginx/conf.d/default.conf。 2. 定位目标 location 块 在配置文件中,您需要找到目标 location 块,该块对应您希望关闭目录列表功能的路径。通常,这可以通过查找以 location / 或 location /path/to/directory/ 开头的块来实现。 3. 关闭目录列表功能 在目标 location 块内部,您需要添加或修改以下指令,以关闭目录列表功能: autoindex off; 通过将 autoindex 设置为 off,您可以禁用 Nginx 的目录列表功能。 4. 保存配置文件并验证语法 在完成修改后,保存配置文件并退出编辑器。然后,您可以验证配置文件的语法是否正确,以避免潜在的错误。在终端中执行以下命令: nginx -t 5. 重启 Nginx 服务 为了使更改生效,您需要重启 Nginx 服务。您可以通过以下命令来实现: service nginx restart 现在,您的 Nginx 服务器将不再生成目录列表,并且访问目录时将返回一个错误页面或您自定义的错误信息页面。这有助于增强您网站的安全性和隐私保护。 ...

2023年5月6日 · 1 分钟 · 诚哥博客

如何在Nginx中添加防跨域配置——Nginx防跨域教程

在前端开发中,由于浏览器的安全策略限制,通常会出现跨域访问的问题。Nginx 可以通过添加跨域头的方式来解决这个问题。本文将介绍如何在 Nginx 中添加防跨域配置。本文将介绍如何在 Nginx 中添加防跨域配置,以解决前端开发中的跨域请求问题。通过使用 CORS 机制和设置 HTTP 响应头信息等措施,可以保障 Web 应用程序的安全性。同时,还注意到了预检请求等需要注意的事项。 什么是跨域请求? Cross-Origin Resource Sharing (CORS) 是一个浏览器机制,它允许 Web 应用程序从不同的源头获取资源。如果一个网站访问另一个网站的资源,就会发起一个跨域请求。 例如,当你在浏览器中打开一个页面时,这个页面可能会加载一些外部脚本或图片。如果这些资源来自与该页面不同的源头,那么浏览器就会发出跨域请求。这种情况下,需要特殊的配置来处理这些请求。 通常情况下,跨域请求会被浏览器禁止。只有在接收到相应的响应头后,浏览器才会允许跨域请求。如果没有这些特殊的响应头,浏览器就会抛出一个错误。 为什么需要防跨域? 在 Web 开发中,跨域是一个常见的安全问题。跨域指的是在一个域名下的文档或脚本试图去请求另一个域名下的资源。例如,一个网站如果要通过 JavaScript 代码从其他域名下的服务器获取数据,就会出现跨域问题。 为什么需要防跨域呢?因为如果没有防范措施,恶意攻击者就可以通过跨域请求获取到其他域名下的敏感信息,例如用户的个人信息、登录信息等,进而进行更加危险的攻击和破坏。 因此,为了保证 Web 应用程序的安全性,开发人员需要采取一些措施来防止跨域攻击。其中包括使用 CORS(跨域资源共享)机制、设置 HTTP 响应头信息等。 防跨域配置 Nginx 首先需要在 Nginx 的配置文件中添加以下内容: location /api { # 允许所有来源跨域访问 add_header 'Access-Control-Allow-Origin' '*'; # 允许发送cookie add_header 'Access-Control-Allow-Credentials' 'true'; # 允许的HTTP请求方法:GET, POST, OPTIONS add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS'; # 允许的HTTP请求头信息 add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range'; # 允许前端获取到的非简单响应头信息 add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range'; # 如果是OPTIONS请求,直接返回204状态码 if ($request_method = 'OPTIONS') { return 204; } # proxy_pass用于将请求转发至指定的后端服务器 proxy_pass http://127.0.0.1:3002/; ... } 上述配置中, /api 表示 API 接口的路径, add_header 用于添加跨域头信息。其中, Access-Control-Allow-Origin 表示允许所有来源访问; Access-Control-Allow-Credentials 表示后端允许前端发送 cookie,请求中必须要有 withCredentials=true 字段; Access-Control-Allow-Methods 表示允许的 HTTP 请求方法; Access-Control-Allow-Headers 表示允许的 HTTP 请求头; Access-Control-Expose-Headers 表示允许前端获取到的非简单响应头信息。 ...

2023年4月10日 · 1 分钟 · 诚哥博客

Nginx本地缓存转发七牛云等OSS图片教程,可以省钱

本教程介绍了如何在 Nginx 上配置缓存模块和反向代理,以实现七牛云/OSS 储存图片的快速转发和缓存。通过这样的配置,可以通过自己网站流量走七牛云/OSS 储存图片资源,能省钱,服务器带宽快的还能提升用户的访问体验。 在我的服务器上,随着访问量增加,七牛云的钱也是大把大把的扣,刚好网站流量省得比较多,转发七牛云储存的图片不就可以了,我只获取一次后面的全部缓存到服务器上,后面访问的在服务器上获取就可以了。这样虽然可能会影响网站访问,但是能省钱。说干就干。 配置 nginx 缓存 在 Nginx 配置文件中添加以下配置,启用缓存: proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:1024m inactive=2d; proxy_cache_key "$scheme$request_method$host$request_uri"; proxy_cache_valid 200 60m; 以上代码中, /var/cache/nginx 是缓存文件存放的路径, my_cache 是缓存的名称, 1024m 表示缓存最多 1024m inactive=2d 表示如果在 2 天时间内没有请求,缓存将被删除, proxy_cache_valid 200 60m其中, code 是一个或多个 HTTP 状态码,表示只有返回指定状态码的响应才会被缓存; time 则是缓存的有效期,可以是一个时间值,也可以是一个字符串。在 proxy_cache_valid` 指令中,如果没有指定 HTTP 状态码,则缓存适用于所有状态码的响应。如果指定了状态码,则只有返回指定状态码的响应才会被缓存。 例如, proxy_cache_valid 200 60m 的意思是,缓存返回状态码为 200 的响应,有效期为 60 分钟。这意味着,如果 nginx 缓存中已经有了一个返回状态码为 200 的响应,并且这个响应的缓存时间还没有过期,那么下一次访问相同的 URL 时,nginx 会直接从缓存中返回这个响应,而不是向后端服务器请求数据。 需要注意的是, proxy_cache_valid 指令只对成功的响应(即状态码为 200~299)生效,对其他状态码的响应(如 404、500 等)不会生效。如果需要缓存其他状态码的响应,可以使用 proxy_cache_valid any 指令。 配置 nginx 反向代理 在 Nginx 配置文件中添加以下配置,启用反向代理: ...

2023年3月28日 · 1 分钟 · 诚哥博客

Nginx根据对应IP和接口URL限制请求流量

如果您想要使用 nginx 根据对应 IP 和接口 URL 来限制请求流量,可以通过以下几个步骤来实现。首先,您需要在 nginx 配置文件中添加一个 limit_req_zone 指令来设置请求限制的区域和限制速率。其次,您需要在 location 指令中添加一个 limit_req 指令来限制特定 URL 的请求流量。在 limit_req 指令中,您可以设置请求速率和超时时间等参数。最后,您可以通过配置 access_log 指令来记录限制请求流量的详细信息。通过这些配置,您可以使用 nginx 来限制特定 IP 和 URL 的请求流量,提高系统的安全性和稳定性。 nginx limit_req 模块,该模块来实现对请求流量的限制。该模块允许您限制客户端 IP 地址的请求速率,并可以为不同的 URL 或 URL 组设置不同的速率限制。在使用 limit_req 模块时,您需要在 nginx 配置文件中设置 limit_req_zone 指令来定义请求限制区域和限制速率,以及使用 limit_req 指令来实现请求流量限制。需要注意的是,limit_req 模块默认情况下是未启用的,您需要在编译 nginx 时进行相关配置或者使用 nginx 预编译版本来启用该模块。 根据 IP 和接口 URL 限制 可以使用 Nginx 的 limit_req 模块来限制 POST 请求的流量。 首先,你需要在 Nginx 的配置文件中设置一个 limit_req_zone,以便在其中存储限流的规则。这样的语法可以是: limit_req_zone $binary_remote_addr$uri zone=per_ip_and_uri:10m rate=1r/s; 其中, $binary_remote_addr$uri 将是存储限制规则的键,每个请求的 IP 地址和 URI 将被用作键。zone 参数指定了这个存储区的名称( per_ip_and_uri),而 rate 参数指定了限制的速率( 1 r/s,即每秒限制 1 个请求)。 ...

2023年2月14日 · 1 分钟 · 诚哥博客

Nginx基本安全配置(防盗连、隐藏版本号、防嵌套等)

在生产环境中 nginx 有很多安全方案,我在为生产环境部署中得到很多经验,收集到的一些常用配置,简单记录一下。 安装 Nginx 正常安全 Nginx 大家应该都会,但是各位要知道在安全要求很高的生产环境中,是无网络安装的,(当然有些有内网源就简单很多了),所以要自己上传文件上去安装,缺什么依赖没法用命令安装像是 yum install 或者 apt-get install 是无法使用的,这里简单说下,等有空再详细说下无网络安装,这里简单说下。 下载编译需要的库源码 安装顺序编译安装以下库源码即可安装 Nginx openssl pcre zlib Nginx 注意 Nginx 安装的时候配置下需要的库免得到时候重新编译安装 cd nginx-1.21.6 ./configure --with-http_ssl_module --with-http_gzip_static_module --with-http_stub_status_module --with-stream make make install 这样 Nginx 就算是安装好了 默认安装路径在 /usr/local/nginx 隐藏版本号 正常 Nginx 默认配置是会显示版本号的信息的如下 只需要在 Nginx 配置文件中(如 nginx.conf)的 http{} 加入以下参数即可 #隐藏版本号 server_tokens off; 然后显示就是这样的 完全不显示 Nginx 这个需要修改 Nginx 源码来实现,具体可以 Google 搜下 防止被嵌套 iframe 在 location / 下加入以下属性即可 ...

2022年6月13日 · 1 分钟 · 诚哥博客