AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 1063729
Accepted
Paul
Paul
Asked: 2021-05-17 06:58:08 +0800 CST2021-05-17 06:58:08 +0800 CST 2021-05-17 06:58:08 +0800 CST

为什么 nginx 不能在 LightSail 上处理我的子域 A 记录?

  • 772

我在 LightSail 上有一台 Ubuntu 机器,它使用 nginx 提供静态文件。

我想要一个子域,所以我添加了一个指向名为client.mydomain.com.

我的 nginx 站点配置文件定义为

server {
        listen 5000;
        server_name client.mydomain.com;

        location / {
                root /home/ubuntu/client-data;
        }
}

虽然我可以通过 http://[ip]/file.txt http://client.mydomain.com/file.txt访问客户端数据中的文件,但返回 301 Permanent Moved 错误。

为什么?是不是因为我已经有一个运行在 80 和 8080 端口的 nginx 站点。为什么子域不能使用 5000 的正确站点?

nginx amazon-lightsail
  • 1 1 个回答
  • 381 Views

1 个回答

  • Voted
  1. Best Answer
    Maanloper
    2021-05-17T15:06:46+08:002021-05-17T15:06:46+08:00

    默认情况下,当使用 HTTP 或 HTTPS 时,您的客户端(Internet-Browser/Utility)将使用默认端口 80/443 连接到您的服务器。

    否则,如果您使用,例如在您的情况下,即http://client.mydomain.com:5000/file.txt,您将按预期请求该文件,因为您在此处在端口 5000 上配置此服务器,该文件将是在存在的情况下提供服务。

    如果您已经在端口 80 上定义了下面的默认 server_name 示例,示例:

    server {
            #listen <PORT>
            listen 80;
            #server_name _invalid_name_for_default_server_
            server_name _default_;
            #location defines WHAT can/should be found WHERE
            location / {
                    root /home/ubuntu/client-data;
            }
    }
    

    在使用域名访问您的服务器时,它通常会连接到端口 80,然后使用 server_name 查找已配置的服务器块以验证它是否存在,否则,如果已配置,它将提供默认页面。

    你的块解释说:

    server {
            #listen <PORT>
            listen 5000;
            #server_name domain_to.listen
            server_name client.mydomain.com;
            #location defines what can be found WHERE
            location / {
                    root /home/ubuntu/client-data;
            }
    }
    

    如果您想使用 client1.mydomain.com/myfile.txt 请求它:

    将“监听”设置为端口 80。如果您随后连接到您的服务器,它将解析 server_name 指令。例如:

    server {
            listen 80;
            server_name client1.mydomain.com;
    
            location / {
                     root /home/ubuntu/client-data;
            }
    }
    

    此外,如果出于某种原因您也想喜欢,请监听两个端口:

    server {
            listen 80;
            listen 5000;
            server_name client1.mydomain.com;
    
            location / {
                     root /home/ubuntu/client-data;
            }
    }
    

    另请阅读:https ://nginx.org/en/docs/http/server_names.html

    我们希望我们能帮助您,如果您想提高客户的最大数量,听错了 :-)

    • 0

相关问题

  • Gzip 与反向代理缓存

  • nginx 作为代理的行为

  • Nginx 学习资源 [关闭]

  • 提供 70,000 个静态文件 (jpg) 的最佳方式?

  • 在 Apache、LightTPD 和 Nginx Web 服务器上提供 PHP 5.x 应用程序的现状?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve