avatar

瓜生花子八宝粥

少壮不努力 老了看浏览器

  • 首页
  • 开源项目
  • Linux
  • Windows
  • Docker
  • 中间件
  • 数据库
主页 Nginx 静态资源站点配置
文章

Nginx 静态资源站点配置

发表于 2024-12-9 更新于 2024-12- 9
作者 jepwei
10~14 分钟 阅读

1. 概述

本文介绍如何配置一个带有 HTTPS、访问控制和目录浏览功能的 Nginx 静态资源站点。

2. 环境要求

  • Nginx 版本 >= 1.19.0(支持 HTTP/2)
  • OpenSSL 支持
  • htpasswd 工具(apache2-utils)

3. 安装必要工具

# CentOS/RHEL
sudo yum install -y httpd-tools

# Ubuntu/Debian
sudo apt install -y apache2-utils

4. 配置步骤

4.1 创建访问密码

# 创建新的密码文件
sudo htpasswd -c /etc/nginx/.htpasswd admin

# 添加新用户或修改现有用户密码
sudo htpasswd /etc/nginx/.htpasswd username

4.2 配置目录权限

# 设置资源目录权限
sudo chown -R nginx:nginx /opt/resources
sudo chmod -R 755 /opt/resources

4.3 Nginx 配置

创建配置文件 /etc/nginx/conf.d/resource-site.conf:

server {
    # 监听配置
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name resource.example.com;

    # SSL 证书配置
    ssl_certificate /etc/nginx/ssl/site.crt;
    ssl_certificate_key /etc/nginx/ssl/site.key;

    # SSL 协议和加密套件配置
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384';
    ssl_prefer_server_ciphers on;

    # SSL 会话配置
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;
    ssl_session_tickets off;

    # 安全头配置
    server_tokens off;
    add_header X-Frame-Options "SAMEORIGIN" always;
    add_header X-XSS-Protection "1; mode=block" always;
    add_header X-Content-Type-Options "nosniff" always;
    add_header Referrer-Policy "strict-origin-when-cross-origin" always;
    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;

    # 资源目录配置
    location / {
        root /opt/resources;
        
        # 目录浏览配置
        autoindex on;
        autoindex_exact_size off;  # 显示文件大小的可读格式
        autoindex_localtime on;    # 显示本地时间
        
        # 访问控制
        auth_basic "Restricted Access";
        auth_basic_user_file /etc/nginx/.htpasswd;

        # 文件下载优化
        sendfile on;
        tcp_nopush on;
        tcp_nodelay on;
        
        # 超时设置
        client_max_body_size 100m;
        client_body_timeout 120s;
        keepalive_timeout 65s;
    }

    # 错误页面配置
    error_page 403 /403.html;
    error_page 404 /404.html;
    error_page 500 502 503 504 /50x.html;
}

# HTTP 重定向到 HTTPS
server {
    listen 80;
    listen [::]:80;
    server_name resource.example.com;
    return 301 https://$server_name$request_uri;
}

5. 安全加固建议

  1. 访问控制
# 添加 IP 访问限制
location / {
    allow 192.168.0.0/16;
    allow 10.0.0.0/8;
    deny all;
}
  1. 日志配置
# 添加访问日志
access_log /var/log/nginx/resource-access.log combined buffer=512k flush=1m;
error_log /var/log/nginx/resource-error.log warn;
  1. 文件类型限制
# 限制特定文件类型访问
location ~* \.(php|php7|sh|pl)$ {
    deny all;
}

6. 性能优化

# 开启 GZIP 压缩
gzip on;
gzip_vary on;
gzip_min_length 1k;
gzip_comp_level 6;
gzip_types text/plain text/css application/json application/javascript text/xml;

# 文件缓存
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
    expires 30d;
    add_header Cache-Control "public, no-transform";
}

7. 维护建议

  1. 定期任务

    • 检查日志文件大小和轮转
    • 更新 SSL 证书
    • 检查文件系统使用情况
  2. 监控项目

    • Nginx 服务状态
    • 磁盘使用率
    • 访问流量统计
    • SSL 证书有效期

8. 故障排查

  1. 访问权限问题
# 检查 SELinux
sudo sestatus
sudo semanage fcontext -a -t httpd_sys_content_t "/opt/resources(/.*)?"
sudo restorecon -Rv /opt/resources

# 检查文件权限
ls -l /opt/resources
ls -l /etc/nginx/.htpasswd
  1. SSL 配置问题
# 测试 SSL 配置
openssl s_client -connect resource.example.com:443 -tls1_2

改进说明:

  1. 完善了配置结构
  2. 增加了安全配置
  3. 添加了性能优化选项
  4. 补充了维护建议
  5. 使用示例域名替换了真实域名
  6. 添加了故障排查指南
  7. 改进了文件权限配置
  8. 增加了 HTTP/2 支持
中间件
Nginx
许可协议: 
分享

相关文章

5月 23, 2025

nacos 部署

环境:centos7 版本:nacos-2.3.2 部署方式:编译安装 1.安装jdk (自行安装) 2.下载nacos安装包并解压 3.配置nacos的配置文件 ### 注释掉原有的端口参数再添加这个 server.port=7200 ### 开启鉴权 nacos.core.auth.enable

12月 31, 2024

容器部署fastdfs

本文详细介绍了在Docker中部署FastDFS的步骤,包括创建工作目录、配置Docker Compose、启动服务、检查端口监听以及修改Nginx配置。首先,需在主机创建FastDFS工作目录并设置权限,然后编辑docker-compose.yml文件定义服务配置。接下来,通过docker-compose命令启动服务,并使用netstat命令确认端口监听情况。最后,若需调整Nginx的8888端口配置,可进入storage容器并编辑nginx.conf文件,完成后重启容器以应用更改。

12月 24, 2024

容器部署nacos

本文详细介绍了如何在 Docker 中部署 Nacos,包括前提条件和具体步骤。首先确保已安装 Docker,然后拉取 Nacos 镜像并创建必要的目录。接着设置目录权限,复制初始配置文件到本地,重新运行 Nacos 容器。最后,用户可以通过浏览器访问 Nacos 管理界面,并可选地启用鉴权。按照这些步骤,用户将能够成功在 Docker 上部署 Nacos,并根据需求进行进一步配置。

下一篇

Nginx 正向代理配置

上一篇

Nginx 限制特定客户端设备访问

最近更新

  • 1panel 部署
  • jumpserver 堡垒机部署
  • ubuntu 设置时间显示为24小时制
  • pritunl vpn 部署
  • dockovpn 部署

热门标签

nacos openvpnas 资源分享 docker oracle mysql ubuntu 开源项目 虚拟化 Linux

目录

©2025 瓜生花子八宝粥. 保留部分权利。

使用 Halo 主题 Chirpy