Score:0

เซิร์ฟเวอร์ Nginx ให้บริการหน้าหลักของ Debian ต่อไป

ธง in

ฉันกำลังพยายามตั้งค่าเว็บไซต์ที่กำหนดเองอย่างง่าย ฉันได้สร้างเซิร์ฟเวอร์อย่างง่ายโดยใช้ Golang และเฟรมเวิร์ก Gin-gonic เซิร์ฟเวอร์ My Go มีดังนี้:

ฟังก์ชันหลัก () {
        r := gin.Default()
        r.GET("/", เสิร์ฟหน้าหลัก)
        r.GET("/icons/openlogo-75.png", func(c *gin.Context) {
                c.File("favicon.ico")
        })
        r.GET("/episode/:id", เสิร์ฟตอน)
        r.GET("styles/style.css", func(c *gin.Context) {
                c.File("styles/style.css")
        })
        r.GET("สคริปต์/main.js", func(c *gin.Context) {
                c.File("สคริปต์/main.js")
        })
        r.GET("favicon.ico", func(c *gin.Context) {
                c.File("favicon.ico")
        })
        r.Run()
}

func ServeMainPage (c * gin.Context) {
        c.File("index.html")
}

func เสิร์ฟตอน (c * gin.Context) {
        รหัสตอน := c.Param("id")
        เส้นทางไฟล์ := "AudioFiles/" + รหัสตอน + ".mp3"
        ค. ไฟล์ (เส้นทางไฟล์)
}

เนื่องจากกระบวนการนี้ไม่สามารถเข้าถึงพอร์ต 80 (ทำงานบน :8080) และเนื่องจากฉันพยายามพัฒนาทักษะของฉัน ฉันจึงพยายามตั้งค่าเซิร์ฟเวอร์ nginx ให้ทำหน้าที่เป็นพร็อกซีย้อนกลับ เซิร์ฟเวอร์ nginx ของฉันมี conf ต่อไปนี้ ซึ่งเป็นค่าเริ่มต้น

http {

        ##
        # การตั้งค่าพื้นฐาน
        ##

        ส่งไฟล์บน;
        tcp_nopush บน;
        tcp_nodelay บน;
        keepalive_timeout 65;
        types_hash_max_size 2048;
        # ปิด server_tokens;

        # server_names_hash_bucket_size 64;
        # server_name_in_redirect ปิด;

        รวม /etc/nginx/mime.types;
        แอปพลิเคชัน default_type/octet-stream;

        ##
        # การตั้งค่า SSL
        ##

        ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # วาง SSLv3 อ้างอิง: พุดเดิ้ล
        เปิด ssl_prefer_server_ciphers;

        ##
        # การตั้งค่าการบันทึก
        ##
        access_log /var/log/nginx/access.log;
        error_log /var/log/nginx/error.log;

        ##
        # การตั้งค่า Gzip
        ##

        เปิด gzip;

        # gzip_vary บน;
        # gzip_proxyed ใด ๆ ;
        # gzip_comp_level 6;
        # gzip_buffers 16 8k;
        # gzip_http_version 1.1;
        # gzip_types ข้อความ/ข้อความล้วน/แอปพลิเคชัน css/แอปพลิเคชัน json/ข้อความจาวาสคริปต์/แอปพลิเคชัน xml/แอปพลิเคชัน xml/xml+rss ข้อความ/จาวาสคริปต์;

        ##
        # การกำหนดค่าโฮสต์เสมือน
        ##

        รวม /etc/nginx/conf.d/*.conf;
        รวม /etc/nginx/sites-enabled/*;
}

และฉันก็ทำตามบทช่วยสอน ที่นี่ เพื่อส่งต่อสิ่งต่าง ๆ ไปยังแอพ Golang ของฉันโดยเพิ่มสิ่งต่อไปนี้ /etc/nginx/sites-available/ro และสัญลักษณ์ที่เชื่อมโยงถึง /etc/nginx/sites-enabled/ro.

เซิร์ฟเวอร์ {
        ฟัง 80;
        server_name รัน-oaks.com;

        ที่ตั้ง / {
                proxy_set_header X-ส่งต่อ-สำหรับ $remote_addr;
                proxy_set_header โฮสต์ $http_host;
                proxy_pass "http://127.0.0.1:8080";
        }
}

ถ้าฉันใช้ curl บนเครื่องพีซีของฉันเพื่อเข้าถึงเซิร์ฟเวอร์ของฉัน ฉันจะได้รับหน้า index.html ที่ต้องการไปยังเซิร์ฟเวอร์ คำสั่ง curl ของฉันนั้นเรียบง่าย ขด http://123.123.123.123, ที่ไหน 123.123.123.123 ถูกแทนที่ด้วย IP จริงของเซิร์ฟเวอร์ระยะไกลของฉัน

อย่างไรก็ตาม การพยายามเข้าถึงที่อยู่ IP เดียวกันนี้ด้วยเว็บเบราว์เซอร์ของฉันก็แสดงหน้า Apache สำหรับ Debian ที่เป็นค่าเริ่มต้นให้ฉันฉันถอนการติดตั้ง apache ก่อนตั้งค่า nginx เพื่อ หวังว่า หลีกเลี่ยงความขัดแย้ง ทั้งในกรณี curl และกรณีเบราว์เซอร์ ฉันเห็นว่าแอป Golang ของฉันได้รับคำขอและส่งคืนสถานะ 200

เหตุใดเบราว์เซอร์ของฉันจึงแสดงหน้าเดเบียนให้ฉันเห็นอยู่เสมอ

ฉันยังเปลี่ยนไป /var/www/index.html เป็นหน้า nginx เริ่มต้นแม้ว่าจะไม่ได้แก้ไขก็ตาม

Score:0
ธง de

ปัญหาคือคำขอของคุณไม่ตรงกับบล็อกเซิร์ฟเวอร์ของคุณ แต่ตรงกับบล็อกเซิร์ฟเวอร์เริ่มต้น

คุณมี:

เซิร์ฟเวอร์ {
        ฟัง 80;
        server_name รัน-oaks.com;

ซึ่งจะตรงกับคำขอใด ๆ ที่เข้ามาในพอร์ต 80 ด้วยชื่อโฮสต์ "running-oaks.com"

Ubuntu มีไฟล์ไซต์ที่เปิดใช้งานอยู่แล้วนอกกรอบ /etc/nginx/sites-enabled/default ซึ่งเป็นสัญลักษณ์ที่เชื่อมโยงกับ /etc/nginx/sites-available/default. นี่คือข้อกำหนดของไซต์ที่ให้หน้าหลักของ Debian

ในไฟล์ปรับแต่งนี้มีบล็อกเซิร์ฟเวอร์ที่เริ่มต้นดังนี้:

เซิร์ฟเวอร์ {
        ฟัง 80 default_server;
        ฟัง [::]:80 default_server;

บล็อกนี้ไม่มี server_name แต่มี default_server คำสั่ง ซึ่งหมายความว่าคำขอใด ๆ ที่มาจากพอร์ต 80 ที่ไม่ตรงกับบล็อกเซิร์ฟเวอร์อื่นควรใช้บล็อกเซิร์ฟเวอร์นี้

เนื่องจากคำขอของคุณใช้ IP โดยตรงและไม่ใช่ชื่อโฮสต์ที่คุณระบุไว้ในคำสั่ง server_name คำขอของคุณจึงตรงกับเซิร์ฟเวอร์เริ่มต้นแทนที่จะเป็นของคุณเอง

ในการแก้ไขปัญหานี้ คุณสามารถลบ symlink ที่ /etc/nginx/sites-enabled/default และเพิ่ม default_server คำสั่งไปยังสายการฟังของคุณ อย่าลืมรีสตาร์ท Nginx หลังจากทำเช่นนี้

(การเพิ่ม default_server นั้นซ้ำซ้อนเพราะหากมีเซิร์ฟเวอร์เพียงเครื่องเดียว ค่าเริ่มต้นจะเป็นค่าเริ่มต้น แต่ควรระบุให้ชัดเจนจะดีกว่า)

โพสต์คำตอบ

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