Score:1

nginx เริ่มต้นเป็น /usr/share/nginx/html แทนที่จะไปที่โฟลเดอร์ที่ระบุในรูท

ธง in

ฉันใช้ letsencrypt เพื่อตั้งค่า ssl สำหรับโครงการ django ที่โฮสต์ในโหมดการผลิตโดยใช้ nginx และ gunicorn

OS (ระบบปฏิบัติการ) ที่ใช้คือ: amazon Linux 2

เมื่อใดก็ตามที่ฉันพยายามเรียกใช้เซิร์ฟเวอร์ ฉันมักจะได้รับหน้าเริ่มต้นของ amazon Linux 2 และเมื่อฉันตรวจสอบบันทึกข้อผิดพลาด ฉันได้รับข้อผิดพลาดต่อไปนี้:

2021/09/11 11:59:14 [ข้อผิดพลาด] 18402#18402: *1961 open() "/usr/share/nginx/html/favicon.ico" ล้มเหลว (2: ไม่มีไฟล์หรือไดเร็กทอรีดังกล่าว), ไคลเอ็นต์: 122.174 .182.129, เซิร์ฟเวอร์: example.com, คำขอ: "GET /favicon.ico HTTP/2.0", โฮสต์: "www.example.com", ผู้อ้างอิง: "https://www.example.com/"

ผลลัพธ์ของ sudo nginx -T:

nginx: ไฟล์การกำหนดค่า /etc/nginx/nginx.conf ไวยากรณ์ใช้ได้
nginx: การทดสอบไฟล์การกำหนดค่า /etc/nginx/nginx.conf สำเร็จ
# ไฟล์กำหนดค่า /etc/nginx/nginx.conf:
# สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการกำหนดค่า ดู:
# * เอกสารภาษาอังกฤษอย่างเป็นทางการ: http://nginx.org/en/docs/
# * เอกสารทางการของรัสเซีย: http://nginx.org/ru/docs/

ผู้ใช้ nginx;
worker_processes อัตโนมัติ
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

# โหลดโมดูลไดนามิก ดู /usr/share/doc/nginx/README.dynamic
รวม /usr/share/nginx/modules/*.conf;

เหตุการณ์ {
    worker_connections 1024;
}
http {
    log_format main '$remote_addr - $remote_user [$time_local] "$request"'
                      '$สถานะ $body_bytes_sent "$http_referer"'
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log /var/log/nginx/access.log หลัก;

    ส่งไฟล์บน;
    tcp_nopush บน;
    tcp_nodelay บน;
    keepalive_timeout 65;
    types_hash_max_size 4096;

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

    # โหลดไฟล์การกำหนดค่าแบบแยกส่วนจากไดเร็กทอรี /etc/nginx/conf.d
    # ดู http://nginx.org/en/docs/ngx_core_module.html#include
    # สำหรับข้อมูลเพิ่มเติม.
    รวม /etc/nginx/conf.d/*.conf;
    เซิร์ฟเวอร์ {

    #if ($host = www.example.com) {
    # ส่งคืน 301 https://$host$request_uri;
    #} # จัดการโดย Certbot
   #
   # ถ้า ($host = example.com) {
   # ส่งคืน 301 https://$host$request_uri;
   # } # จัดการโดย Certbot


    ฟัง 80;
    server_name example.com www.example.com;
    รูท /home/ec2-user/business;
    ถ้า ($host = www.example.com) {
        ส่งคืน 301 https://$host$request_uri;
    } # จัดการโดย Certbot

    ถ้า ($host = example.com) {
        ส่งคืน 301 https://$host$request_uri;
    } # จัดการโดย Certbot
    สถานที่ = /favicon.ico { access_log off; ปิด log_not_found; }

    ตำแหน่ง / คงที่ {
        รูท /home/ec2-user/business;
    }

    ที่ตั้ง / {
        proxy_set_header โฮสต์ $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-ส่งต่อ-สำหรับ $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_pass http://unix:/home/ec2-user/buisness/buisness.sock;
    }

}

  # เซิร์ฟเวอร์ {
   # ฟัง 80;
    # ฟัง [::]:80;
     #   ชื่อเซิร์ฟเวอร์  _;
     # root /home/ec2-user/business;

        # โหลดไฟล์การกำหนดค่าสำหรับบล็อกเซิร์ฟเวอร์เริ่มต้น
# รวม /etc/nginx/default.d/*.conf;
 # error_page 404 /404.html;
  # สถานที่ = /404.html {
   # }

    # error_page 500 502 503 504 /50x.html;
     # สถานที่ = /50x.html {
      # }
    #}

# การตั้งค่าสำหรับเซิร์ฟเวอร์ที่เปิดใช้งาน TLS

    เซิร์ฟเวอร์ {
        ฟัง 443 ssl http2;
        ฟัง [::]:443 ssl http2;
        server_name example.com www.example.com;
        รูท /home/ec2-user/business/;


        ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # จัดการโดย Certbot
        ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # จัดการโดย Certbot
        ssl_session_cache ที่แชร์:SSL:1m;
        ssl_session_timeout 10m;
        ssl_ciphers สูง:!aNULL:!MD5;
        เปิด ssl_prefer_server_ciphers;

        # โหลดไฟล์การกำหนดค่าสำหรับบล็อกเซิร์ฟเวอร์เริ่มต้น
        รวม /etc/nginx/default.d/*.conf;
        error_page 404 /404.html;
            ตำแหน่ง = /40x.html {
        }

       error_page 500 502 503 504 /50x.html;
            ตำแหน่ง = /50x.html {
        }
}

}


# ไฟล์กำหนดค่า /etc/nginx/mime.types:

ประเภท {
    ข้อความ/html html htm shtml;
    ข้อความ/css css;
    ข้อความ/xml xml;
    รูปภาพ/gif gif;
    รูปภาพ/jpeg jpeg jpg;
    แอปพลิเคชัน/จาวาสคริปต์ js;
    แอ็พพลิเคชัน/atom+xml อะตอม;
    แอปพลิเคชัน/rss+xml rss;

    ข้อความ/mathml mml;
    ข้อความ/ธรรมดา txt;
    text/vnd.sun.j2me.app-descriptor jad;
    ข้อความ/vnd.wap.wml wml;
    ข้อความ/x-คอมโพเนนต์ htc;

    รูปภาพ/png png;
    ภาพ/svg+xml svg svgz;
    รูปภาพ/tiff tif tiff;
    ภาพ/vnd.wap.wbmp wbmp;
    รูปภาพ/เว็บเพจ เว็บเพจ;
    ไอคอนรูปภาพ/x-icon;
    ภาพ/x-jng jng;
    ภาพ/x-ms-bmp bmp;

    ตัวอักษร/woff woff;
    ตัวอักษร/woff2 woff2;

    แอปพลิเคชัน / java-archive jar war ear;
    แอปพลิเคชัน/json json;
    แอปพลิเคชัน/mac-binhex40 hqx;
    เอกสารแอปพลิเคชัน/msword;
    ใบสมัคร/pdf pdf;
    ใบสมัคร/postscript ps eps ai;
    แอปพลิเคชัน/rtf rtf;
    แอปพลิเคชัน/vnd.apple.mpegurl m3u8;
    application/vnd.google-earth.kml+xml kml;
    แอปพลิเคชัน/vnd.google-earth.kmz kmz;
    แอปพลิเคชัน/vnd.ms-excel xls;
    application/vnd.ms-fontobject eot;
    แอปพลิเคชัน/vnd.ms-powerpoint ppt;
    แอปพลิเคชัน/vnd.oasis.opendocument.graphics odg;
    แอปพลิเคชัน/vnd.oasis.opendocument.presentation odp;
    application/vnd.oasis.opendocument.spreadsheet ods;
    แอปพลิเคชัน/vnd.oasis.opendocument.text odt;
    แอปพลิเคชัน/vnd.openxmlformats-officedocument.presentationml.presentation
                                                     pptx;
    แอปพลิเคชัน/vnd.openxmlformats-officedocument.spreadsheetml.sheet
                                                     xlsx;
    แอปพลิเคชัน/vnd.openxmlformats-officedocument.wordprocessingml.document
                                                     docx;
    แอปพลิเคชัน/vnd.wap.wmlc wmlc;
    แอปพลิเคชัน/x-7z-บีบอัด 7z;
    ใบสมัคร/x-cocoa cco;
    แอปพลิเคชัน/x-java-archive-diff jardiff;
    แอปพลิเคชัน/x-java-jnlp-file jnlp;
    เรียกใช้แอปพลิเคชัน / x-makeself;
    แอปพลิเคชัน/x-perl pl pm;
    แอปพลิเคชัน/x-pilot prc pdb;
    แอปพลิเคชั่น/x-rar-บีบอัด rar;
    แอปพลิเคชั่น / x-redhat-package-manager รอบต่อนาที;
    ใบสมัคร / ทะเล x-sea;
    แอปพลิเคชั่น/x-shockwave-แฟลช swf;
    แอปพลิเคชั่น / นั่ง x-stuffit;
    ใบสมัคร/x-tcl tcl tk;
    ใบสมัคร/x-x509-ca-cert จาก pem crt;
    แอปพลิเคชัน/x-xpinstall xpi;
    แอปพลิเคชัน/xhtml+xml xhtml;
    แอปพลิเคชัน/xspf+xml xspf;
    แอปพลิเคชั่น / ซิปซิป;

    แอปพลิเคชัน / octet-stream bin exe dll;
    แอ็พพลิเคชัน/octet-stream deb;
    แอปพลิเคชัน/octet-stream dmg;
    แอปพลิเคชั่น/octet-stream iso img;
    แอปพลิเคชัน/ออคเต็ตสตรีม msi msp msm;

    เสียง/midi กลาง midi kar;
    เสียง/mpeg mp3;
    เสียง/ogg ogg;
    เสียง/x-m4a m4a;
    เสียง/x-realaudio ra;

    วิดีโอ/3gpp 3gpp 3gp;
    วิดีโอ/mp2t ts;
    วิดีโอ/mp4 mp4;
    วิดีโอ/mpeg mpeg mpg;
    วิดีโอ/quicktime mov;
    วิดีโอ/เว็บเอ็ม เว็บเอ็ม;
    วิดีโอ/x-flv flv;
    วิดีโอ/x-m4v m4v;
    วิดีโอ/x-mng mng;
    วิดีโอ/x-ms-asf asx asf;
    วิดีโอ/x-ms-wmv wmv;
    วิดีโอ/x-msvideo avi;
}

เมื่อฉันวิ่ง sudo nginx -t : ฉันไม่ได้รับข้อผิดพลาด

PS: นี่เป็นครั้งแรกที่ฉันโฮสต์ ssl ด้วย letsencrypt และ nginx ดังนั้นฉันไม่เสียใจหากไฟล์ .conf ดูเป็นคลัสเตอร์มาก

ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชมอย่างสูง ขอบคุณ!

cn flag
ความคิดเห็นไม่ได้มีไว้สำหรับการอภิปรายเพิ่มเติม การสนทนานี้ [ย้ายไปที่แชท](https://chat.stackexchange.com/rooms/129529/discussion-on-question-by-madhav-nginx-defaulting-to-usr-share-nginx-html-inste) .
Score:0
ธง in

ตกลงดังนั้นฉันจึงแก้ไขมัน

คำตอบสั้น ๆ : คุณต้องเพิ่มกฎที่รวมอยู่ในบล็อกเซิร์ฟเวอร์ 80 ลงในบล็อกเซิร์ฟเวอร์ 443

ตอบยาว: ไฟล์ nginx.conf ของฉัน:

# สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการกำหนดค่า ดู:
# * เอกสารภาษาอังกฤษอย่างเป็นทางการ: http://nginx.org/en/docs/
# * เอกสารทางการของรัสเซีย: http://nginx.org/ru/docs/

ผู้ใช้ nginx;
worker_processes อัตโนมัติ
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

# โหลดโมดูลไดนามิก ดู /usr/share/doc/nginx/README.dynamic
รวม /usr/share/nginx/modules/*.conf;

เหตุการณ์ {
    worker_connections 1024;
}
http {
    log_format main '$remote_addr - $remote_user [$time_local] "$request"'
                      '$สถานะ $body_bytes_sent "$http_referer"'
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log /var/log/nginx/access.log หลัก;

    ส่งไฟล์บน;
    tcp_nopush บน;
    tcp_nodelay บน;
    keepalive_timeout 65;
    types_hash_max_size 4096;

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

    # โหลดไฟล์การกำหนดค่าแบบแยกส่วนจากไดเร็กทอรี /etc/nginx/conf.d
    # ดู http://nginx.org/en/docs/ngx_core_module.html#include
    # สำหรับข้อมูลเพิ่มเติม.
    รวม /etc/nginx/conf.d/*.conf;
    เซิร์ฟเวอร์ {

    ฟัง 80;
    server_name example.com www.example.com;
    รูท /home/ec2-user/business;
    ถ้า ($host = www.example.com) {
        ส่งคืน 301 https://$server_name$request_uri;
    } # จัดการโดย Certbot

    ถ้า ($host = example.com) {
        ส่งคืน 301 https://$server_name$request_uri;
    } # จัดการโดย Certbot
    สถานที่ = /favicon.ico { access_log off; ปิด log_not_found; }

    ตำแหน่ง / คงที่ {
        รูท /home/ec2-user/business;
    }


    ที่ตั้ง / {
        proxy_set_header โฮสต์ $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-ส่งต่อ-สำหรับ $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_pass http://unix:/home/ec2-user/buisness/buisness.sock;
    }

}



# การตั้งค่าสำหรับเซิร์ฟเวอร์ที่เปิดใช้งาน TLS

    เซิร์ฟเวอร์ {
        ฟัง 443 ssl http2;
        ฟัง [::]:443 ssl http2;
        server_name www.example.com ตัวอย่าง.com;


        ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # จัดการโดย Certbot
        ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # จัดการโดย Certbot
        ssl_session_cache ที่แชร์:SSL:1m;
        ssl_session_timeout 10m;
        ssl_ciphers สูง:!aNULL:!MD5;
        เปิด ssl_prefer_server_ciphers;

        # โหลดไฟล์การกำหนดค่าสำหรับบล็อกเซิร์ฟเวอร์เริ่มต้น
        #include /etc/nginx/default.d/*.conf;
        รวม /etc/nginx/conf.d/*.conf;
       # รวม /home/ec2-user/business/Main;

    สถานที่ = /favicon.ico { access_log off; ปิด log_not_found; }

    ตำแหน่ง / คงที่ {
        รูท /home/ec2-user/business;
    }

    ที่ตั้ง / {
        proxy_set_header โฮสต์ $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-ส่งต่อ-สำหรับ $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_pass http://unix:/home/ec2-user/buisness/buisness.sock;
    }
}
}

เดอะ กฎ กล่าวถึงคือ:

สถานที่ = /favicon.ico { access_log off; ปิด log_not_found; }

    ตำแหน่ง / คงที่ {
        รูท /home/ec2-user/business;
    }


    ที่ตั้ง / {
        proxy_set_header โฮสต์ $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-ส่งต่อ-สำหรับ $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_pass http://unix:/home/ec2-user/buisness/buisness.sock;
    }

หลังจากเปลี่ยน .conf ไฟล์ ให้ดำเนินการตามขั้นตอนต่อไปนี้:

  1. sudo nginx -t : สิ่งนี้จะส่งกลับการยืนยันว่ามีข้อผิดพลาดทางไวยากรณ์กับไฟล์ของคุณหรือไม่

  2. sudo systemctl รีสตาร์ท nginx : สิ่งนี้จะอัปเดต nginx ของคุณ

คำเตือนสองสามข้อสำหรับผู้อ่านในอนาคต:

  1. ตรวจสอบว่าเส้นทางรูทของคุณมีอยู่จริงหรือไม่
  2. เปลี่ยน proxy pass ตามตำแหน่งของคุณ .ถุงเท้า พบไฟล์

ตะโกนถึงบ๊อบบี้ (บ็อบบี้ลิเยฟ) จากมหาสมุทรดิจิทัล - เขาช่วยฉันแก้ปัญหา

ตรวจสอบการแชทที่เชื่อมโยงในความคิดเห็นโดย mod เพื่อค้นหาการปรับปรุงที่แนะนำโดย นิกิต้า, และขอขอบคุณที่ ไมเคิล แฮมป์ตัน ด้วย.

ลิงก์ของคำถามที่ถามในมหาสมุทรดิจิทัล: คำถาม

โพสต์คำตอบ

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