server {
listen 80;
server_name olddomain.com;
return 301 $scheme://newdomain.com$request_uri;
}
server {
listen 80;
server_name example.com;
rewrite ^/oldpath/(.*)$ /newpath/$1 permanent;
}
server {
listen 80;
server_name example.com;
if ($http_host ~* "^www\.(.*)$") {
set $domain $1;
rewrite ^(.*)$ $scheme://$domain$1 permanent;
}
}
server {
listen 80;
server_name ~^(.*)\.example\.com$;
root /var/www/$1;
index index.html;
# 可选:记录子域名到日志
access_log /var/log/nginx/$1.access.log;
}
server {
listen 80;
server_name ~^(?<subdomain>.+)\.example\.com$;
location / {
root /var/www/$subdomain;
try_files $uri $uri/ =404;
}
}
server {
listen 443 ssl;
server_name ~^(.*)\.example\.com$;
ssl_certificate /path/to/wildcard.crt;
ssl_certificate_key /path/to/wildcard.key;
root /var/www/$1;
index index.html;
}
server {
listen 80;
server_name ~^(www\.)?(?<domain>.+)$;
# 强制HTTPS
if ($scheme = http) {
return 301 https://$domain$request_uri;
}
# 处理子域名
if ($host ~* ^(.*)\.example\.com$) {
set $subdomain $1;
root /var/www/$subdomain;
}
# 默认主域名处理
if ($host = example.com) {
root /var/www/main;
}
# 其他重写规则
rewrite ^/old-page$ /new-page permanent;
}
以上配置可以根据实际需求进行组合和调整。在修改配置后,记得测试并重载Nginx:
sudo nginx -t # 测试配置
sudo systemctl reload nginx # 重载配置