Score:0

ip เดียวแก้ไข 2 เว็บไซต์ - การกำหนดค่า Ubuntu 20.04 เพื่ออนุญาตโดเมนเฉพาะ

ธง cn

ดังนั้น ฉันเพิ่งติดตั้ง Digital Ocean Droplet ด้วย Ubuntu 20.04 พร้อมเว็บเซิร์ฟเวอร์ nginxฉันเริ่มต้นเว็บไซต์หนึ่งบอกว่า example.com ใช้การตั้งค่า nginx จากนั้น IP ของมหาสมุทรดิจิทัลเป็นบันทึกในแผง DNS ของโดเมน

ดังนั้น example.com จึงทำงานได้ดี แต่ไม่รู้ว่าฉันใส่ IP เดียวกันในโดเมนอื่นโดยบอกว่า example1.com และตอนนี้ทั้ง example1.com และ example.com กำลังเปิดเว็บไซต์เดียวกัน

จึงเกิดคำถามขึ้นว่าโดเมนอื่นใดที่รู้จัก IP ของฉันสามารถใช้ IP นี้แสดงเว็บไซต์ที่ไม่ควรอนุญาตได้

ฉันไม่ชัดเจนว่าต้องกำหนดค่าใดในระดับ OS หรือระดับเซิร์ฟเวอร์เพื่อป้องกันไม่ให้โดเมนที่ไม่ต้องการใช้ IP นี้หรือเพิ่มบางโดเมนบนเซิร์ฟเวอร์เพื่ออนุญาตโดเมนที่ระบุเท่านั้น

    เซิร์ฟเวอร์ {
        ฟัง 80;
        ส่งคืน 301 https://$host$request_uri;
    }
    
    เซิร์ฟเวอร์ {
            ฟัง 443 เริ่มต้น ssl http2;
            server_name example.com;
            ssl_session_cache ในตัว:1000 แชร์:SSL:10m;
            ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
            ssl_ciphers สูง:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
            เปิด ssl_prefer_server_ciphers;
            เปิด gzip;
            เปิด gzip_static;
            แบบอักษร gzip_types/ข้อความ woff2/ข้อความล้วน/แอปพลิเคชัน css/แอปพลิเคชัน json/ข้อความ x-javascript/แอปพลิเคชัน xml/แอปพลิเคชัน xml/xml>
            gzip_proxyed ใด ๆ ;
            gzip_vary บน;
            gzip_comp_level 6;
            gzip_buffers 16 8k;
            gzip_http_version 1.1;

นี่คือการกำหนดค่าทั้งหมดของ nginx:

ไฟล์การกำหนดค่า /etc/nginx/sites-enabled/ug:

เซิร์ฟเวอร์ {
    ฟัง 80 default_server;
กลับ 404;
   # ส่งคืน 301 https://$host$request_uri;
}

เซิร์ฟเวอร์ {
    ฟัง 443 ssl http2;
    server_name example.com;
    ssl_session_cache ในตัว:1000 แชร์:SSL:10m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers สูง:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
    เปิด ssl_prefer_server_ciphers;
    เปิด gzip;
    เปิด gzip_static;    
    แบบอักษร gzip_types/ข้อความ woff2/ข้อความล้วน/แอปพลิเคชัน css/แอปพลิเคชัน json/ข้อความ x-javascript/แอปพลิเคชัน xml/แอปพลิเคชัน xml/xml+ข้อความ rss/แอปพลิเคชันจาวาสคริปต์/จาวาสคริปต์;
    gzip_proxyed ใด ๆ ;
    gzip_vary บน;
    gzip_comp_level 6;
    gzip_buffers 16 8k;
    gzip_http_version 1.1;
# กลับ 404;

    ที่ตั้ง / {
        ดัชนี index.html
        add_header Pragma "ไม่มีแคช";
        add_header Cache-Control "ไม่มีที่เก็บ, ไม่มีแคช, ต้องตรวจสอบความถูกต้องอีกครั้ง, ตรวจสอบภายหลัง = 0, ตรวจสอบล่วงหน้า = 0";
        try_files $uri $uri @สากล;
        รูท /home/winnc/www/us/dist/ecommcerce/server;
    }

    ที่ตั้ง @สากล {
        #port ที่กำหนดไว้ใน server.js ของคุณ
        proxy_pass http://localhost:4000;
        proxy_http_version 1.1;
        proxy_set_header อัพเกรด $http_upgrade;
        proxy_set_header การเชื่อมต่อ 'อัปเกรด';
        proxy_set_header โฮสต์ $host;
        proxy_cache_bypass $http_upgrade;
    }

    ตำแหน่ง / ผู้ดูแลระบบ {
        ดัชนี index.html
        add_header Pragma "ไม่มีแคช";
        add_header Cache-Control "ไม่มีที่เก็บ, ไม่มีแคช, ต้องตรวจสอบความถูกต้องอีกครั้ง, ตรวจสอบภายหลัง = 0, ตรวจสอบล่วงหน้า = 0";
        try_files $uri $uri/admin @สากล-admin;
        รูท /home/winnc/www/us/dist/ecommerce-admin/server/dist/ecommerce-admin/browser;
    }

    ตำแหน่ง @ ผู้ดูแลระบบสากล {
        #port ที่กำหนดไว้ใน server.js ของคุณ
        proxy_pass http://localhost:4001; 
        proxy_http_version 1.1;
        proxy_set_header อัพเกรด $http_upgrade;
        proxy_set_header การเชื่อมต่อ 'อัปเกรด';
        proxy_set_header โฮสต์ $host;
        proxy_cache_bypass $http_upgrade;
    }

    ตำแหน่ง /api/ {
            proxy_pass http://localhost:5000;
            proxy_http_version 1.1;
            proxy_set_header อัพเกรด $http_upgrade;
            proxy_set_header การเชื่อมต่อคงอยู่;
            proxy_set_header โฮสต์ $host;
            proxy_cache_bypass $http_upgrade;
        proxy_redirect http://localhost:5000 https://example.com;
        รูท /home/winnc/www/us;
    }

        สถานที่ /เนื้อหา/ {
             proxy_pass http://localhost:5000;
             proxy_http_version 1.1;
             proxy_set_header อัพเกรด $http_upgrade;
             proxy_set_header การเชื่อมต่อคงอยู่;
             proxy_set_header โฮสต์ $host;
             proxy_cache_bypass $http_upgrade;
         proxy_redirect http://localhost:5000 https://example.com;
        รูท /home/winnc/www/us;
    }


# ฟัง 443 ssl; # จัดการโดย Certbot
    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # จัดการโดย Certbot
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # จัดการโดย Certbot
# รวม /etc/letsencrypt/options-ssl-nginx.conf; # จัดการโดย Certbot
# ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # จัดการโดย Certbot
}


#เซิร์ฟเวอร์ {
# ถ้า ($host = example.com) {
# ส่งคืน 301 https://$host$request_uri;
# } # จัดการโดย Certbot


# server_name example.com;
# ฟัง 80;
# กลับ 404; # จัดการโดย Certbot


#}
Score:1
ธง us

nginx มีแนวคิดของโฮสต์เสมือนเริ่มต้น ซึ่งให้บริการกับคำขอ HTTP ที่ไม่มีการกำหนดค่าโฮสต์เสมือนที่สอดคล้องกัน

มีการอธิบายอัลกอริทึมที่แน่นอนสำหรับการตัดสินใจเลือกโฮสต์เสมือนที่จะใช้ เอกสาร nginx.

หากโฮสต์เสมือนสองโฮสต์ในคำถามของคุณเป็นโฮสต์เดียวที่กำหนดค่า โฮสต์เสมือนเริ่มต้นสำหรับพอร์ตที่เกี่ยวข้องด้วย

ในการกำหนดค่าโฮสต์เสมือนเริ่มต้นที่เหมาะสม คุณต้องเพิ่มสิ่งต่อไปนี้ เซิร์ฟเวอร์ บล็อก:

เซิร์ฟเวอร์ {
    ฟัง 80 default_server;
    กลับ 404;
}

เซิร์ฟเวอร์ {
    ฟัง 443 default_server ssl http2;
    กลับ 404;
}

สิ่งนี้บอกให้ nginx ส่งคืน HTTP 404 รหัสสถานะสำหรับโฮสต์เสมือนทั้งหมด ยกเว้นโฮสต์เสมือนที่กำหนดค่าด้วย a ชื่อเซิร์ฟเวอร์.

คุณต้องลบสิ่งที่ไม่มีความหมายออกด้วย ค่าเริ่มต้น คำหลักในปัจจุบัน ฟัง คำสั่งเพื่อให้มันกลายเป็น

ฟัง 443 ssl http2;

โดยรวมแล้วคุณต้องมีสี่ เซิร์ฟเวอร์ บล็อก:

  1. default_server สำหรับพอร์ต 80
  2. default_server สำหรับพอร์ต 443
  3. ตัวอย่าง.คอม สำหรับพอร์ต 80
  4. ตัวอย่าง.คอม สำหรับพอร์ต 443
cn flag
ทันทีที่ฉันเปลี่ยนการตั้งค่าทั้งโดเมนจะได้รับ 404 หรือทั้งสองอย่างใช้งานได้ แต่ฉันแค่ต้องการให้โดเมนหนึ่งใช้งานได้ แต่อีกโดเมนหนึ่งไม่ทำงาน
us flag
โปรดแก้ไขคำถามของคุณและเพิ่มผลลัพธ์ของ `nginx -T` เพื่อให้เราเห็นการกำหนดค่าทั้งหมดของคุณ
cn flag
ฉันแก้ไขคำถาม
us flag
คุณต้องคงบล็อก 'เซิร์ฟเวอร์' ดั้งเดิมของคุณไว้สำหรับการรับส่งข้อมูล HTTP และเพิ่มบล็อก 'default_server' ในคำตอบของฉันแยกต่างหาก

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา