我在 No-IP 上注册了一个 ddns 子域:example.ddns.net
我将 No-IP 配置为映射到我的路由器的 IP,该 IP 将端口转发到我的 NGINX Web 服务器。我想拥有一个单独的 Web 服务器,我托管该服务器,web1.example.ddns.net
该服务器指向/var/www/web1
。我不知道如何告诉 NGINX 在/var/www/web1
从 调用时指向web1.example.ddns.net
。有人可以详细解释如何配置我的服务器吗?
下面是我的配置,example.ddns.net
此配置位于,/etc/nginx/sites-available/
有一个链接/etc/nginx/sites-enabled
。
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/example.ddns.net;
server_name example.ddns.net;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
}
}
下面是我的配置,web1.example.ddns.net
此配置位于,/etc/nginx/sites-available/
有一个链接/etc/nginx/sites-enabled
。
server {
listen 80;
listen [::]:80;
root /var/www/web1.example.ddns.net;
server_name web1.example.ddns.net;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
}
}
这些是我唯一更改过的文件。以下 NGINX 服务器托管在 Ubuntu Server 上,我通过 ssh 访问服务器,并通过另一台计算机访问网页。有人能给出一些如何解决这个问题的说明吗?
答案1
以下答案相当基础。所以如果我重复了您已经知道的内容,请原谅我。=)
我已经在 No-IP 上注册了一个 DDNS 子域名:
example.ddns.net
。 [...] 我想要一个由我托管的单独 Web 服务器,web1.example.ddns.net
它指向/var/www/web1
。
需要注意的是,如果您还没有这样做,您需要web1.example.ddns.net
使用 No-IP 进行设置并将其指向您的服务器。否则,服务器配置将无关紧要,因为没有人能够通过该地址联系服务器。
/var/www/web1
我不知道的是如何告诉 NGINX在从 调用时指向web1.example.ddns.net
。
您真正需要的只是基本的服务器块。摘自 NGINX 默认示例:
例如 example.ddns.net
server {
listen 80;
server_name example.ddns.net;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root /var/www/example.ddns.net;
index index.html index.htm;
}
# error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
例如 web1.example.ddns.net
server {
listen 80;
server_name web1.example.ddns.net;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root /var/www/web1;
index index.html index.htm;
}
# error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
基本说明
对于 Ubuntu,您应该将这些服务器块放在适当的
sites-available
目录下(例如/etc/nginx/sites-available/
),例如example.ddns.net
和web1.example.ddns.net
。创建相关的符号链接
sites-enabled
(/etc/nginx/sites-enabled/
例如):sudo ln -s /etc/nginx/sites-available/example.ddns.net /etc/nginx/sites-enabled/ sudo ln -s /etc/nginx/sites-available/web1.example.ddns.net /etc/nginx/sites-enabled/
或者使用你的操作系统推荐的任何方法。
按照评论中的建议运行
nginx -t
(例如sudo nginx -t
),以确保 NGINX 没有遇到任何语法错误或其他问题。使用 ex. 重新启动 NGINX
sudo systemctl restart nginx
。
笔记
上述块放弃 IPv6(这对于测试来说可能不是必要的)。
这两个例子都没有使用
default_server
。每个相应的
root
条目都放在一个location
块中(即网站根目录/
)。上面的第二个服务器块使用
/var/www/web1
作为root
for/
(而不是web1.example.ddns.net
),因为这是您最初在问题中指定的。无论如何,要清楚的是,root
需要匹配您物理文件系统上的任何目录结构。也就是说,它不必镜像您的server_name
,除非您实际创建了名为 ex.example.ddns.net
和的目录(或类似目录)web1.example.ddns.net
。第一台服务器块仍然使用
/var/www/example.ddns.net
,因此请确保这是您存储文件的正确路径example.ddns.net
。广义上讲,在对服务器进行更改后,清除浏览器缓存通常是一个明智的步骤,这样浏览器就不会将旧数据返还给您。