无法访问 Nginx 上托管的域名

无法访问 Nginx 上托管的域名

我已承担了尝试弄清楚如何使用 Nginx 托管我的网站(以前使用 IIS)的任务。我购买了运行 CentOS 8 的 VPS。我一直在尝试配置 Nginx 以在同一端口上运行两个不同的域。

我已经检查并遵循了网上的多个指南,但仍然无法定位这两个网站。

安装 Nginx 并配置服务后,我在以下位置创建了两个 conf 文件:/etc/nginx/conf.d目录:

website1.com.conf

server {
    listen 80;
    root /var/www/website1.com;
    index index.html index.htm;
    server_name website1.com www.website1.com;

    location / {
            try_files $uri $uri/ =404;
    }

}

website2.com.conf

server {
    listen 80;
    root /var/www/website2.com;
    index index.html index.htm;
    server_name website2.com www.website2.com;

    location / {
            try_files $uri $uri/ =404;
    }

}

然后我还在目录中创建了两个基本的 index.html 文件/var/www/网站(1|2).com

最初,我必须从 nginx.conf 文件中删除默认服务器块,才能让其加载默认站点以外的任何内容。

nginx.conf

# For more information on configuration, see:
#   * Official English Documentation: http://nginx.org/en/docs/
#   * Official Russian Documentation: http://nginx.org/ru/docs/

user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;

events {
    worker_connections 1024;
}

http {
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 2048;

    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;

    # Load modular configuration files from the /etc/nginx/conf.d directory.
    # See http://nginx.org/en/docs/ngx_core_module.html#include
    # for more information.
    include /etc/nginx/conf.d/*.conf;

}

我一直尝试使用此 URL、我的 IP 地址以及 localhost 来加载该网站(http://0.0.0.0/website1)据我了解,Nginx 首先根据端口匹配传入请求,然后根据服务器名称匹配,我的两个配置文件都在监听端口 80。

我真的很感激有人能指点我在这里做错了什么,因为我所做的一切似乎都遵循文档。

答案1

您需要在 URL 中使用主机名(例如 website2.com)。该主机名应位于 DNS 中,或者,为了进行测试,位于 /etc/hosts 中,或位于工作站操作系统的等效目录中。

编辑: Web 浏览器的工作原理如下。当您有一个 URI (URL) 时,字符串会被拆分为多个组件(协议、用户、密码、主机、路径、查询、片段......)

名称解析- 主机是我们感兴趣的。它可以是主机名或 IP。如果是主机名,则名称将由位于 Web 客户端计算机上的解析器库解析。默认情况下,此库将使用hosts文件,然后使用 DNS 来解析名称。

虚拟主机又称为 nginx 服务器块- Web 浏览器将发出 HTTP 请求,该请求将包含Host:标头,以告知 Web 服务器他正在尝试访问哪个主机名。这就是为什么如果您想测试这些服务器,您需要有一个主机名而不是 IP。

相关内容