Ek het 'n Ubuntu-masjien op LightSail wat statiese lêers met nginx bedien.

Ek wil graag 'n subdomein hê, so ek het 'n A-opname bygevoeg wat na die IP van die masjien met die naam wys client.mydomain.com.

My nginx-werfkonfigurasielêers word gedefinieer as

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

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

Alhoewel ek toegang tot die lêers in kliënt-data kan kry via http://[ip]/file.txt, gee http://client.mydomain.com/file.txt 'n 301 Permanent Moved-fout terug.

Hoekom? Is dit omdat ek reeds 'n nginx-werf het wat by 80- en 8080-poorte loop. Waarom sou die subdomein nie die regte webwerf vanaf 5000 gebruik nie?

answer

By verstek sal jou kliënt (Internet-blaaier/Utility) aan jou bediener koppel deur die verstekpoorte 80/443 te gebruik wanneer HTTP of HTTPS gebruik word.

Anders, as jy, soos in jou geval, bv http://client.mydomain.com:5000/file.txt gebruik , sal jy daardie lêer aanvra soos bedoel, soos jy hierdie bediener hier op poort 5000 gekonfigureer het en die lêer sal wees bedien ingeval dit bestaan.

As jy reeds 'n standaard server_name voorbeeld het soos hieronder gedefinieer op poort 80, Voorbeeld:

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;
        }
}

Terwyl u toegang tot u bediener gebruik deur 'n domeinnaam te gebruik, sal dit gewoonlik aan poort 80 koppel en dan soek na die gekonfigureerde bedienerblok met bedienernaam om te verifieer of dit bestaan, anders, indien gekonfigureer, sal dit die verstekbladsy bedien.

Jou Blok het verduidelik:

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;
        }
}

In die geval, jy wil dit versoek met client1.mydomain.com/myfile.txt:

Stel "luister" na poort 80. As jy dan aan jou bediener koppel, sal dit die bedienernaam-aanwysing oplos. Bv:

server {
        listen 80;
        server_name client1.mydomain.com;

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

Verder, as jy om watter rede ook al wil hou, luister na BEIDE poorte:

server {
        listen 80;
        listen 5000;
        server_name client1.mydomain.com;

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

Lees asseblief ook: https://nginx.org/en/docs/http/server_names.html

Ons hoop ons kon jou help, as jy die maksimum aantal kliënte wil insamel, luister is die verkeerde een :-)