指南
警告
使用 SSL 設定時,必須先建立 SSL 憑證,否則 Web 伺服器將無法啟動。請參閱建立 SSL 憑證文件,先完成憑證建立,再繼續以下步驟。
提示
如果你使用的是具備自動 SSL 功能的 Caddy,則不需要手動建立 SSL 憑證,Caddy 會自動處理。
首先,移除 Nginx 的預設設定:
rm /etc/nginx/sites-enabled/default
接著,將以下檔案的內容貼上到名為 pterodactyl.conf 的設定檔中,並將 <domain> 替換成你使用的網域名稱。若使用一般 Linux 發行版,請將檔案放置於 /etc/nginx/sites-available/;若使用 RHEL、Rocky Linux 或 AlmaLinux,則放置於 /etc/nginx/conf.d/。
server {
# 請把範例中的 <domain> 換成你的網域名稱或 IP 位址
listen 80;
server_name <domain>;
return 301 https://$server_name$request_uri;
}
server {
# 請把範例中的 <domain> 換成你的網域名稱或 IP 位址
listen 443 ssl http2;
server_name <domain>;
root /var/www/pterodactyl/public;
index index.php;
access_log /var/log/nginx/pterodactyl.app-access.log;
error_log /var/log/nginx/pterodactyl.app-error.log error;
# 允許較大的檔案上傳,並延長指令碼執行時間
client_max_body_size 100m;
client_body_timeout 120s;
sendfile off;
# SSL 設定,請把範例中的 <domain> 換成你的網域
ssl_certificate /etc/letsencrypt/live/<domain>/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/<domain>/privkey.pem;
ssl_session_cache shared:SSL:10m;
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:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384";
ssl_prefer_server_ciphers on;
# 取消下面這行的註解前,請先參考 https://hstspreload.org/
# add_header Strict-Transport-Security "max-age=15768000; preload;";
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
add_header X-Robots-Tag none;
add_header Content-Security-Policy "frame-ancestors 'self'";
add_header X-Frame-Options DENY;
add_header Referrer-Policy same-origin;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/run/php/php8.3-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param PHP_VALUE "upload_max_filesize = 100M \n post_max_size=100M";
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param HTTP_PROXY "";
fastcgi_intercept_errors off;
fastcgi_buffer_size 16k;
fastcgi_buffers 4 16k;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
include /etc/nginx/fastcgi_params;
}
location ~ /\.ht {
deny all;
}
}
最後,啟用 Nginx 設定並重新啟動服務:
# 如果使用 RHEL、Rocky Linux 或 AlmaLinux,則不需要建立此符號連結。
sudo ln -s /etc/nginx/sites-available/pterodactyl.conf /etc/nginx/sites-enabled/pterodactyl.conf
# 無論使用哪個作業系統,都必須重新啟動 Nginx。
sudo systemctl restart nginx
首先,移除 Nginx 的預設設定:
rm /etc/nginx/sites-enabled/default
接著,將以下檔案的內容貼上到名為 pterodactyl.conf 的設定檔中,並將 <domain> 替換成你使用的網域名稱。若使用一般 Linux 發行版,請將檔案放置於 /etc/nginx/sites-available/;若使用 RHEL、Rocky Linux 或 AlmaLinux,則放置於 /etc/nginx/conf.d/。
server {
# 請把範例中的 <domain> 換成你的網域名稱或 IP 位址
listen 80;
server_name <domain>;
root /var/www/pterodactyl/public;
index index.html index.htm index.php;
charset utf-8;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
access_log off;
error_log /var/log/nginx/pterodactyl.app-error.log error;
# 允許較大的檔案上傳,並延長指令碼執行時間
client_max_body_size 100m;
client_body_timeout 120s;
sendfile off;
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/run/php/php8.3-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param PHP_VALUE "upload_max_filesize = 100M \n post_max_size=100M";
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param HTTP_PROXY "";
fastcgi_intercept_errors off;
fastcgi_buffer_size 16k;
fastcgi_buffers 4 16k;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
}
location ~ /\.ht {
deny all;
}
}
最後,啟用 Nginx 設定並重新啟動服務:
# 如果使用 RHEL、Rocky Linux 或 AlmaLinux,則不需要建立此符號連結。
sudo ln -s /etc/nginx/sites-available/pterodactyl.conf /etc/nginx/sites-enabled/pterodactyl.conf
# 無論使用哪個作業系統,都必須重新啟動 Nginx。
sudo systemctl restart nginx
首先,移除 Apache 的預設設定:
a2dissite 000-default.conf
接著,將以下檔案的內容貼上到名為 pterodactyl.conf 的設定檔中,並將 <domain> 替換成你使用的網域名稱。若使用一般 Linux 發行版,請將檔案放置於 /etc/apache2/sites-available;若使用 RHEL、Rocky Linux 或 AlmaLinux,則放置於 /etc/httpd/conf.d/。
注意:使用 Apache 時,請確認已安裝 libapache2-mod-php8.3 套件,否則 Web 伺服器將無法顯示 PHP 內容。
<VirtualHost *:80>
# 請把範例中的 <domain> 換成你的網域名稱或 IP 位址
ServerName <domain>
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]
</VirtualHost>
<VirtualHost *:443>
# 請把範例中的 <domain> 換成你的網域名稱或 IP 位址
ServerName <domain>
DocumentRoot "/var/www/pterodactyl/public"
AllowEncodedSlashes On
php_value upload_max_filesize 100M
php_value post_max_size 100M
<Directory "/var/www/pterodactyl/public">
Require all granted
AllowOverride all
</Directory>
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/<domain>/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/<domain>/privkey.pem
</VirtualHost>
建立上述檔案後,執行以下指令。如果你使用的是 RHEL、Rocky Linux 或 AlmaLinux,則不需要執行以下指令,只需執行 systemctl restart httpd 即可。
# RHEL、Rocky Linux 或 AlmaLinux 不需要執行以下指令
sudo ln -s /etc/apache2/sites-available/pterodactyl.conf /etc/apache2/sites-enabled/pterodactyl.conf
sudo a2enmod rewrite
sudo a2enmod ssl
sudo systemctl restart apache2
首先,移除 Apache 的預設設定:
a2dissite 000-default.conf
接著,將以下檔案的內容貼上到名為 pterodactyl.conf 的設定檔中,並將 <domain> 替換成你使用的網域名稱。若使用一般 Linux 發行版,請將檔案放置於 /etc/apache2/sites-available;若使用 RHEL、Rocky Linux 或 AlmaLinux,則放置於 /etc/httpd/conf.d/。
注意:使用 Apache 時,請確認已安裝 libapache2-mod-php8.3 套件,否則 Web 伺服器將無法顯示 PHP 內容。
<VirtualHost *:80>
# 請把範例中的 <domain> 換成你的網域名稱或 IP 位址
ServerName <domain>
DocumentRoot "/var/www/pterodactyl/public"
AllowEncodedSlashes On
php_value upload_max_filesize 100M
php_value post_max_size 100M
<Directory "/var/www/pterodactyl/public">
AllowOverride all
Require all granted
</Directory>
</VirtualHost>
建立上述檔案後,執行以下指令。如果你使用的是 RHEL、Rocky Linux 或 AlmaLinux,則不需要執行以下指令,只需執行 systemctl restart httpd 即可。
# RHEL、Rocky Linux 或 AlmaLinux 不需要執行以下指令
sudo ln -s /etc/apache2/sites-available/pterodactyl.conf /etc/apache2/sites-enabled/pterodactyl.conf
sudo a2enmod rewrite
sudo systemctl restart apache2
在加入自訂設定前,請先移除預設設定。你可以清空設定檔內容,或直接刪除設定檔,再重新建立。設定檔路徑為 /etc/caddy/Caddyfile。
若要完整刪除設定檔,請執行:
rm /etc/caddy/Caddyfile
接著使用你選擇的編輯器建立新的設定檔。
請將以下檔案的內容貼入設定檔,並將 <domain> 替換成你的網域名稱。
{
servers :443 {
timeouts {
read_body 120s
}
}
}
# 請把範例中的 <domain> 換成你的網域名稱或 IP 位址
<domain> {
root * /var/www/pterodactyl/public
file_server
php_fastcgi unix//run/php/php8.3-fpm.sock {
root /var/www/pterodactyl/public
index index.php
env PHP_VALUE "upload_max_filesize = 100M
post_max_size = 100M"
env HTTP_PROXY ""
env HTTPS "on"
read_timeout 300s
dial_timeout 300s
write_timeout 300s
}
header Strict-Transport-Security "max-age=16768000; preload;"
header X-Content-Type-Options "nosniff"
header X-XSS-Protection "1; mode=block;"
header X-Robots-Tag "none"
header Content-Security-Policy "frame-ancestors 'self'"
header X-Frame-Options "DENY"
header Referrer-Policy "same-origin"
request_body {
max_size 100m
}
respond /.ht* 403
log {
output file /var/log/caddy/pterodactyl.log {
roll_size 100MiB
roll_keep_for 7d
}
level INFO
}
}提示
如果你使用 Cloudflare DNS Proxy 模式,請參閱此教學,了解如何設定 Caddy,使用 DNS 挑戰取得 SSL 憑證。
最後,重新啟動 Caddy:
systemctl restart caddy
在加入自訂設定前,請先移除預設設定。你可以清空設定檔內容,或直接刪除設定檔,再重新建立。設定檔路徑為 /etc/caddy/Caddyfile。
若要完整刪除設定檔,請執行:
rm /etc/caddy/Caddyfile
接著使用你選擇的編輯器建立新的設定檔。
請將以下檔案的內容貼入設定檔,並將 <domain> 替換成你的網域名稱。
此設定有兩項差異:我們在 <domain> 後方加上 :80,並且在全域設定的 servers 指令中,將連接埠從 :443 改為 :80。
{
servers :80 {
timeouts {
read_body 120s
}
}
}
# 請把範例中的 <domain> 換成你的網域名稱或 IP 位址
<domain>:80 {
root * /var/www/pterodactyl/public
file_server
php_fastcgi unix//run/php/php8.3-fpm.sock {
root /var/www/pterodactyl/public
index index.php
env PHP_VALUE "upload_max_filesize = 100M
post_max_size = 100M"
env HTTP_PROXY ""
# env HTTPS "on" # 重要:這行故意註解掉,用來停用 HTTPS
read_timeout 300s
dial_timeout 300s
write_timeout 300s
}
header Strict-Transport-Security "max-age=16768000; preload;"
header X-Content-Type-Options "nosniff"
header X-XSS-Protection "1; mode=block;"
header X-Robots-Tag "none"
header Content-Security-Policy "frame-ancestors 'self'"
header X-Frame-Options "DENY"
header Referrer-Policy "same-origin"
request_body {
max_size 100m
}
respond /.ht* 403
log {
output file /var/log/caddy/pterodactyl.log {
roll_size 100MiB
roll_keep_for 7d
}
level INFO
}
}最後,重新啟動 Caddy:
systemctl restart caddy