我从 DigitalOcean 买了一个专用服务器,并配置nginx
了 mysql 和 php,它的 IP 地址是a.b.c.d
. 我从GoDaddy
:siteone.com
和. 购买了两个域名sitetwo.com
。我做了一个子域sub.siteone.com
,它将是一个WordPress
站点。我提出sub.siteone.com
来a.b.c.d
。GoDaddy
通过关注这篇文章和这篇文章,我将 WordPress 文件放在/var/www/sub.siteone.com/html/
. /etc/nginx/sites-available/sub.siteone.com
包含以下内容:
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
root /var/www/sub.siteone.com/html;
index index.php index.html index.htm;
server_name sub.siteone.com;
location / {
try_files $uri $uri/ /index.php?q=$uri&$args;
}
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
结果,当我sub.siteone.com
在浏览器中输入时,它会重定向到a.b.c.d
并很好地显示 WordPress 站点。
问题是我希望我的服务器 ( a.b.c.d
) 包含多个站点(即域)。所以我想一个机制将a.b.c.d/one/
包含第一个域,并a.b.c.d/two/
包含第二个域。因此,
- 当我
sub.siteone.com
在浏览器中输入时,网址保持不变,而内容来自a.b.c.d/one/
; - 当我
sub.siteone.com/photos/
在浏览器中输入时,当内容来自时,url 保持不变a.b.c.d/one/photos
; - 当我
sitetwo.com
在浏览器中输入时,网址保持不变,而内容来自a.b.c.d/two/
; - 例如,当我
sitetwo.com/downloads/
在浏览器中输入时,URL 保持不变,而内容来自a.b.c.d/two/downloads
谁能告诉我这种机制是否有意义?我如何修改 nginx 和 GoDaddy 的设置来实现这一点?
你想要的是所谓的虚拟主机。它比你描述的要好得多!
只需添加
server
具有不同server_name
和root
目录的多个块。server
每个域名一个块。请注意,只能将其中一个标记为,default_server
但除此之外,所有块都可以看起来相同。最好的方法是为每个站点创建一个文件,然后将每个文件符号链接到
/etc/nginx/sites-enabled/
. 完成后,重新启动nginxservice nginx restart
您可以使用 Nginx 中的服务器块轻松实现此目的,以创建多个“虚拟主机”,每个虚拟主机都有不同的 HTTP 配置。这可以通过 Nginx 以不同的方式处理您的请求,具体取决于您用于访问服务器的 URL。
简而言之,要访问 siteone.com,您需要创建
server
一个server_name
值为siteone.com
. 每个服务器块可以在它自己的文件中,也可以在同一个文件中,这并不重要。siteone.com:
sub.siteone.com:
网站二网
这应该提供您需要的行为。还值得注意的是,除了为每个服务器使用不同的根目录之外,您还可以做更多的事情,为每个虚拟主机设置不同的日志文件、转发请求和更多功能也很有用。
这是为 sitetwo.com 提供特定日志文件的粗略示例
使用 Nginx,您应该根据需要创建尽可能多的站点配置文件,并简单地修改 server_name 和 root 语句以将外部域映射到它们的内容和代码。
Ben 的回答也很好,这里有一个替代方案,只是为了多样化:创建一个服务器并在其中添加多个指向您网站位置的位置块。
服务器{
}