我有一个带有纯 Nginx 的基于 Ubuntu 16.04 的 DigitalOcean VPS(我通过 DigitalOcean 的 DNS 管理工具管理 DNS)。在我的 Nginx 环境中,我在/var/www/html/
. 一种是example.com
(HTTPS),另一种是具有名为test
(HTTP) 的目录的无域站点。
如何为example.com创建一个将导致test的子域?( test.example.com
)?
1)我的nginx.conf。
2)我的example.com
站点配置:
server {
root /var/www/html/example.com;
server_name example.com www.example.com;
location ~ /\.ht {
deny all;
}
location / {
index index.php index.html index.htm fastcgi_index;
try_files $uri $uri =404 $uri/ /index.php?$args;
}
location ~* \.(jpg|jpeg|png|gif|ico|css|js|ttf|woff|pdf)$ {
expires 365d;
}
location ~ \.php$ {
fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
listen 80; # managed by Certbot
listen 443 ssl http2; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
if ($scheme != "https") {
return 301 https://$host$request_uri;
} # managed by Certbot
# Redirect non-https traffic to https
# if ($scheme != "https") {
# return 301 https://$host$request_uri;
# } # managed by Certbot
}
3)我的test
网站配置:
server {
root /var/www/html/test;
location ~ /\.ht {
deny all;
}
location / {
index index.php index.html index.htm fastcgi_index;
try_files $uri $uri =404 $uri/ /index.php?$args;
}
location ~ \.php$ {
fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
listen 80;
}
更新:
- 我还没有更改我的 VPS 托管服务提供商的 DNS 管理工具中的任何内容。
- 我希望世界上的每个人都能够
test
通过子域访问该站点。
在任何 Nginx 和 DNS 环境中都需要两件事来正确创建具有不同文档根的新子域:
处理它的附加
server { }
块(除了您在第 3 项中已有的块)。将另一个子域指向正确的网络服务器的 DNS 记录。
根据提供的配置,您需要做两件事:
您的
test.example.com
站点配置缺少server_name test.example.com;
指令。添加一个并重新启动您的nginx
过程。在您的主域的 DNS 中设置
test.example.com
DNS 记录(可能来自您的云的 DNS 管理工具)。总是告诉 NGINX 哪些站点要处理哪些服务器块。作为
nginx
Ubuntu 中的包维护者,我熟悉人们遇到的大多数用户级陷阱,例如这个。你给了我们这个:
因此,从字面上看,只需在您的行之前添加
root
这一行:...你得到这个配置文件: