在Nginx服务器下配置个性二级域名及多个域名,可以通过以下步骤实现:
一、配置DNS服务器
1、泛域名解析:需要在DNS服务器上配置泛域名解析,将所有以“.example.com”结尾的二级域名解析到同一台服务器的IP地址,这可以通过创建别名记录(CNAME)或使用通配符来实现。
2、添加A记录:对于每个具体的二级域名(如www、api等),在DNS服务器上添加相应的A记录,将其指向服务器的IP地址。
二、配置Nginx服务器
1. 基本HTTP配置
对于简单的HTTP服务,可以直接在Nginx配置文件中添加server块,指定监听端口和域名,并设置网站的根目录和默认文件。
server { listen 80; server_name www.example.com; location / { root /var/www/html; index index.html index.htm; } }
2. 泛域名解析配置
对于泛域名解析,可以使用正则表达式匹配所有二级域名,并将它们指向同一个网站根目录或根据子域名动态设置根目录。
server { listen 80; server_name ~^(?<subdomain>.+)\.example\.com$; set $root_path '/var/www/html/$subdomain'; root $root_path; index index.html index.htm index.php; try_files $uri $uri/ =404; location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } location ~ /\.ht { deny all; } }
在这个配置中,~^(?<subdomain>.+)\.example\.com$
是一个正则表达式,用于匹配所有以“.example.com”结尾的二级域名,并将匹配到的子域名部分存储在变量$subdomain
中,根据$subdomain
的值动态设置网站的根目录。
3. HTTPS配置
为了启用HTTPS,需要为每个域名配置SSL证书和私钥,可以使用Let's Encrypt等免费SSL证书提供商获取证书,以下是一个简单的HTTPS配置示例:
server { listen 443 ssl; server_name www.example.com; ssl_certificate /path/to/certificate.crt; ssl_certificate_key /path/to/private.key; ssl_session_cache shared:SSL:1m; ssl_session_timeout 5m; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; location / { root /var/www/html; index index.html index.htm; } }
对于泛域名的HTTPS配置,由于SSL证书通常不支持泛域名,因此需要为每个具体域名单独配置证书或使用通配符证书。
4. 重定向配置
如果希望将HTTP请求重定向到HTTPS,可以在HTTP server块中添加重定向规则:
server { listen 80; server_name www.example.com; return 301 https://$host$request_uri; }
三、重启Nginx服务器
完成配置后,需要重启Nginx服务器以使更改生效:
sudo service nginx restart
或者,如果使用的是systemctl管理Nginx服务:
sudo systemctl restart nginx
注意事项
确保DNS服务器已正确配置,并且所有二级域名都能解析到服务器的IP地址。
SSL证书必须与域名匹配,否则会导致浏览器信任问题,对于泛域名解析,通常需要使用通配符证书或为每个具体域名单独配置证书。
在配置过程中,请务必小心谨慎,避免误操作导致网站无法访问,建议在进行任何更改之前备份原始配置文件。