跳到主要内容

服务器配置

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;

# 允许更大的文件上传
# 允许客户端请求体的最大大小为 100MB,这对于文件上传功能很重要。
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

你也可以把始终使用 HTTPSHTTP 严格传输安全 (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;