跳到主要内容

服务器配置

Web 服务器配置​

# 定义一个虚拟主机块
server {
# 监听 80 端口,即标准的 HTTP 协议端口
listen 80;

# 定义此虚拟主机响应的域名。你需要将 <domain> 替换为你的实际域名或本地开发域名 (如 myapp.local)
server_name <domain>;

# 设置网站文件的根目录
root /var/www/html;
# 设置默认的索引文件。当访问一个目录时,Nginx 会依次查找 index.php 和 index.html。
index index.php index.html;

# 允许更大的文件上传
# 允许客户端请求体的最大大小为 100 MB,这对于文件上传功能很重要。
client_max_body_size 100m;

# 添加安全相关的 HTTP 响应头
# 尽管网站是 HTTP 的,但这些头部仍然可以提供一些基础的浏览器端安全保护。
# 防止浏览器对内容类型进行MIME嗅探
add_header X-Content-Type-Options nosniff;
# 启用浏览器的 XSS (跨站脚本) 过滤器
add_header X-XSS-Protection "1; mode=block";
# 内容安全策略:只允许同源的页面将本页面作为 frame 嵌入,防止点击劫持
add_header Content-Security-Policy "frame-ancestors 'self'";
# 旧版浏览器防止点击劫持的响应头,只允许同源页面嵌入
add_header X-Frame-Options "SAMEORIGIN";
# 控制 Referer 头的发送策略,只在同源请求时发送完整的 Referer
add_header Referrer-Policy same-origin;

# 定义根路径 (/) 的请求处理方式
location / {
# 这是一个常见的 "前端控制器" 模式,用于 PHP 框架 (如 Laravel, Symfony, OpenCart 等)
# 1. 尝试直接查找与 URI 匹配的文件 ($uri)
# 2. 如果没找到,尝试查找与 URI 匹配的目录 ($uri/)
# 3. 如果都没找到,则将请求重写到 /index.php,并将原始 URI 和参数作为查询字符串传递
try_files $uri $uri/ /index.php?route=$uri&$args;
}

# 匹配以 .tpl, .cache, .htaccess 结尾的请求
location ~ \.(tpl|cache|htaccess)$ {
# 直接返回 403 Forbidden (禁止访问) 错误,防止模板、缓存、配置等敏感文件被公开访问
return 403;
}

# 匹配以 /node_modules/ 开头的请求
location ^~ /node_modules/ {
# 直接返回 403 Forbidden 错误,防止开发依赖包被公开访问
return 403;
}

# 匹配以 /scripts/ 开头的请求
location ^~ /scripts/ {
# 直接返回 403 Forbidden 错误,可以用于保护一些不想被直接访问的脚本目录
return 403;
}

# 匹配所有以 .php 结尾的请求
location ~ \.php$ {
# 将请求通过 FastCGI 协议传递给 PHP-FPM (PHP FastCGI Process Manager) 进行处理。
# 这里使用的是 Unix socket,它是一种在同一台机器上进行进程间通信的文件。
# 它的路径可能需要根据你的系统配置进行修改 (例如,在不同 PHP 版本下可能是 php8.1-fpm.sock)。
fastcgi_pass unix:/run/php/php-fpm.sock; # 可能需要编辑此行

# 定义 FastCGI 的默认索引文件
fastcgi_index index.php;

# 设置 SCRIPT_FILENAME 变量,这是最重要的参数之一。
# 它告诉 PHP-FPM 要执行哪个具体的脚本文件。
# $document_root 是网站根目录, $fastcgi_script_name 是请求的脚本路径 (如 /index.php)。
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

# 包含标准的 FastCGI 参数文件,这个文件定义了许多其他必要的 CGI 环境变量。
include fastcgi_params;
}
}

Cloudflare​

如果你不想自己配置 SSL 证书,你可以通过使用 Cloudflare 的免费 SSL 服务来提供 HTTPS 功能。 Cloudflare 的免费 SSL 服务可以为你的网站提供免费的 SSL 证书,无需任何额外的配置。

(严格一点需要调整加密模式)

img.png

你也可以把 始终使用 HTTPS 和 HTTP 严格传输安全 (HSTS) 打开

源服务器加密​

如果你希望提高 Cloudflare 到源服务器的安全性,可以使用源服务器加密来实现。

创建证书后,按照服务器配置配置证书,开启 经过身份验证的源服务器拉取 即可

代理配置​

通过代理连接会导致两个问题:

  • NamelessMC 会看到你的代理地址而不是你的用户地址。这会破坏 IP 封锁和速率限制。这可以通过从代理向后端 Web 服务器发送 Forwarded、X-Forwarded-For 或 X-Real-IP(不推荐)标头来解决。

在你的 Nginx 配置文件中添加如下几行:

proxy_set_header X-Forwarded-For    $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Port $server_port;

在 Nginx 配置文件 http 段配置:

set_real_ip_from 0.0.0.0/0;
real_ip_header X-Forwarded-For;