Score:0

ด้วย NGINX ฉันจะเปลี่ยนเส้นทาง www ไปยัง non-www ในขณะที่ใช้โดเมนย่อยได้อย่างไร

ธง jp

ฉันตั้งค่าเว็บไซต์ด้วย wordpress โดยใช้ NGINX และ PHP-FPM

backend.site.com ใช้สำหรับ wordpress-backend

เว็บไซต์.คอมมีไว้สำหรับ nuxt-frontend

ปัญหาของฉัน

เมื่อฉันเข้าถึงส่วนหน้าด้วยการพิมพ์ www.site.com ฉันถูกเปลี่ยนเส้นทางไปที่ backend.site.com

# /etc/nginx/conf.d/default.conf

เซิร์ฟเวอร์ {
    ฟัง 80;

    ส่งคืน 301 https://$host$request_uri;
}

เซิร์ฟเวอร์ {
    ฟัง 443 ssl;
    ssl_certificate /etc/nginx/ssl/site.com_ssl_certificate.cer;
    ssl_certificate_key /etc/nginx/ssl/site.com_private_key.key;

    ส่งคืน 301 https://$host$request_uri;
}
# /etc/nginx/conf.d/site.com.conf

แผนที่ $sent_http_content_type $หมดอายุ {
    ยุค "text/html";
    "text/html; charset=utf-8" ยุค;
    ปิดโดยปริยาย;
}

เซิร์ฟเวอร์ {
    ฟัง 443 ssl;
    ฟัง [::]:443 ssl;

    ssl_certificate /etc/nginx/ssl/site.com_ssl_certificate.cer;
    ssl_certificate_key /etc/nginx/ssl/site.com_private_key.key;

    server_name site.com www.site.com;

    เปิด gzip;
    gzip_types ข้อความ/แอปพลิเคชันธรรมดา/ข้อความ xml/แอปพลิเคชัน css/จาวาสคริปต์;
    gzip_min_length 1,000;

    ที่ตั้ง ^~ / {
        นามแฝง /var/www/html/web-frontend/.nuxt/dist/client;

        หมดอายุ $expires;
        proxy_set_header โฮสต์ $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_read_timeout 1m;
        proxy_connect_timeout 1m;
        proxy_pass http://127.0.0.1:3000;
    }

    ตำแหน่ง ~ /\.ht {
                ปฏิเสธทั้งหมด
    }

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

    ตำแหน่ง = /robots.txt {
            ปิด log_not_found; access_log off; อนุญาตทั้งหมด
    }

    ตำแหน่ง ~* \.(css|gif|ico|jpeg|jpg|js|png)$ {
            หมดอายุสูงสุด
            ปิด log_not_found;
    }
}
# /etc/nginx/conf.d/backend.site.com.conf

เซิร์ฟเวอร์ {
    # การกำหนดค่า SSL
    #
    ฟัง 443 ssl;
    ฟัง [::]:443 ssl;
    ssl_certificate /etc/nginx/ssl/site.com_ssl_certificate.cer;
    ssl_certificate_key /etc/nginx/ssl/site.com_private_key.key;

    รูท /var/www/html/web-backend/web;

    # เพิ่ม index.php ในรายการหากคุณใช้ PHP
    ดัชนี index.php;

    server_name backend.site.com;

    gzip_vary บน;
    gzip_proxyed ใด ๆ ;
    gzip_comp_level 6;
    gzip_buffers 16 8k;
    gzip_http_version 1.1;
    gzip_min_length 0;
    ข้อความ gzip_types/แอปพลิเคชันธรรมดา/ข้อความจาวาสคริปต์/ข้อความ css/แอปพลิเคชัน xml/แอปพลิเคชัน xml/xml+ข้อความ rss/แอปพลิเคชันจาวาสคริปต์/แอปพลิเคชัน vnd.ms-fontobject/แบบอักษร x-font-ttf/opentype;

    client_max_body_size 100M;

    ที่ตั้ง / {
        try_files $uri $uri/ /index.php$is_args$args;
    }

    ตำแหน่ง ~ \.php$ {
            try_files $uri =404;
            fastcgi_split_path_info ^(.+\.php)(/.+)$;
            fastcgi_pass ยูนิกซ์:/run/php/php7.4-fpm.sock;
            fastcgi_index index.php;
            รวม fastcgi_params;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            fastcgi_param SCRIPT_NAME $fastcgi_script_name;
        }

    ตำแหน่ง ~ /\.ht {
            ปฏิเสธทั้งหมด
    }

    สถานที่ = /favicon.ico {
            ปิด log_not_found; access_log off;
    }
    ตำแหน่ง = /robots.txt {
            ปิด log_not_found; access_log off; อนุญาตทั้งหมด
    }
    ตำแหน่ง ~* \.(css|gif|ico|jpeg|jpg|js|png)$ {
            หมดอายุสูงสุด
            ปิด log_not_found;
    }

    #error_page 404 /404.html;

    # เปลี่ยนเส้นทางหน้าข้อผิดพลาดของเซิร์ฟเวอร์ไปยังหน้าสแตติก /50x.html
    #
    error_page 500 502 503 504 /50x.html;
    ตำแหน่ง = /50x.html {
        รูท /usr/share/nginx/html;
    }
}
Score:0
ธง cg

คุณมีความเข้าใจผิดว่าโฮสต์เสมือนทำงานอย่างไร ตรวจสอบจุดเหล่านี้:

  1. เมื่อคุณกำหนดค่าโฮสต์เสมือน คุณต้องตั้งค่าโฮสต์เสมือนสำหรับ http (พอร์ต 80) และ https (พอร์ต 443)
  2. เปลี่ยนเส้นทาง virtualhost ของคุณบนพอร์ต 80 ไปยังโฮสต์เสมือนบนพอร์ต 443.
  3. จำไว้เสมอว่าต้องจัดการกับการรับส่งข้อมูลขาเข้าของ http (พอร์ต 80) ของคุณ ทำไม นักพัฒนาบางคน (ฉันไม่รู้ว่าทำไม) ใช้การเผยแพร่โฮสต์เสมือนเดียวกัน สองแอปที่แตกต่างกัน แอปหนึ่งบนพอร์ต 80 อีกแอปหนึ่งบน 443

ลองเพิ่มสิ่งนี้เพื่อแก้ปัญหาของคุณ

การกำหนดค่านี้เปลี่ยนเส้นทางการรับส่งข้อมูลที่มาจากพอร์ต 80 ไปที่ https

เซิร์ฟเวอร์ {
    ฟัง 80; 
    server_name site.com www.site.com;
    access_log /var/log/nginx/site.com.access.log หลัก;
    error_log /var/log/nginx/site.com.error.log ข้อผิดพลาด;
  
    ที่ตั้ง / {
        ส่งคืน 301 https://$host$request_uri;
    }
}

เปลี่ยนเส้นทางการรับส่งข้อมูลที่เข้ามา backend.site.com:80 พอร์ตไปที่ backend.site.com:443 ของโฮสต์เสมือน

บันทึก: ฉันเพิ่ม :80 เพื่อเน้นพอร์ตที่เชื่อมต่อเข้ามา

เซิร์ฟเวอร์ {
    ฟัง 80;
    server_name backend.site.com;
    access_log /var/log/nginx/backend.site.com.access.log หลัก;
    error_log /var/log/nginx/backend.site.com.error.log ข้อผิดพลาด;
   
    ที่ตั้ง / {
        ส่งคืน 301 https://$host$request_uri;
    }
}

โพสต์คำตอบ

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