Score:0

Nginx ไม่สามารถโหลด css, js และ png ของเซิร์ฟเวอร์ tomcat

ธง ng

ฉันกำลังพยายามปรับใช้เซิร์ฟเวอร์ Tomcat & Nginx บนอินสแตนซ์ AWS EC2 เดียว ฉันมี 3 อินสแตนซ์ & ในแต่ละอินสแตนซ์ ฉันต้องการปรับใช้เซิร์ฟเวอร์ Nginx & Tomcat ด้านล่างนี้คือไฟล์กำหนดค่าของฉัน

/etc/nginx/nginx.conf

ผู้ใช้ www-data;
worker_processes อัตโนมัติ
pid /run/nginx.pid;
รวม /etc/nginx/modules-enabled/*.conf;

เหตุการณ์ {
        worker_connections 768;
        # multi_accept บน;
}

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/conf.d/application.conf

เซิร์ฟเวอร์ {
    ฟัง 80 default_server;
    ฟัง [::]:80 default_server;
    server_name localhost;
    รูท /var/lib/tomcat9/webapps/ROOT;
    ดัชนี deploy.html;
    ตำแหน่ง / ผู้ดูแลระบบ {
                try_files $uri $uri/ /deploy.html;
        }
    ตำแหน่ง /admin/admin-พอร์ทัล {
        นามแฝง /opt/tomcat/webapps/ROOT/;
        เขียนใหม่ /admin-portal/(.*) /$1 ตัวแบ่ง;
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-ส่งต่อเซิร์ฟเวอร์ $host;
        proxy_set_header X-ส่งต่อ-สำหรับ $proxy_add_x_forwarded_for;
        proxy_pass http://localhost:8080/;
        }
    ตำแหน่ง ~ \.css {
           add_header เนื้อหา-ประเภทข้อความ/css;
        }
    ตำแหน่ง ~ \.js {
            แอปพลิเคชันประเภทเนื้อหา add_header/x-javascript;
        }

เป้าหมายของฉันคือ เมื่อฉันกด http://IP/ หรือ HTTP://IP/admin มันควรจะเปลี่ยนเส้นทางไปที่ deploy.html และเมื่อฉันกด HTTP://IP/admin/admi-portal มันควรจะเปิดเซิร์ฟเวอร์ tomcat

หมายเหตุ: ฉันประสบความสำเร็จในทั้งสองเงื่อนไขยกเว้นเมื่อฉันกด HTTP://IP/admin/admi-portal จากนั้นจะเปิดเฉพาะหน้า HTML และไฟล์ CSS/png/js ได้รับข้อผิดพลาด 404:not found

/opt/tomcat/webapps/ROOT/ นี่คือเส้นทางไฟล์สำหรับไฟล์คงที่ Tomcat ทั้งหมด CSS/js/png เป็นต้น

ใครสามารถช่วยฉันได้บ้าง

Score:0
ธง us

ในกรณีนี้ การร้องขอไฟล์ CSS/JS ด้วย /ผู้ดูแลระบบ/พอร์ทัล/ คำนำหน้ายังคงให้บริการโดย the ตำแหน่ง ~ \.css บล็อกเนื่องจากวิธีการทำงานของอัลกอริทึมการเลือกตำแหน่ง nginx

หากคุณต้องการป้องกันการจับคู่ regex สำหรับสิ่งที่มี /admin/admin-พอร์ทัล คำนำหน้า คุณต้องใช้:

ตำแหน่ง ^~ /admin/admin-พอร์ทัล {
    ...
}

โพสต์คำตอบ

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