為什麼 nginx 不能在 LightSail 上處理我的子域 A 記錄?
我在 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 的正確站點?
預設情況下,當使用 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
我們希望我們能幫助您,如果您想提高客戶的最大數量,聽錯了 :-)