Score:0

วิธีแก้ปัญหาการเปลี่ยนเส้นทางที่ไม่ใช่ www ไปยัง www Nginx

ธง fr

นี่คือการกำหนดค่าเว็บเซิร์ฟเวอร์ NGinx ของฉัน

    เซิร์ฟเวอร์ {
        ถ้า ($host ~ ^[^.]+\.betafox\.net$) {
            ส่งคืน 301 https://$host$request_uri;
        } # จัดการโดย Certbot
    
    
        ถ้า ($host = www.betafox.net) {
            ส่งคืน 301 https://$host$request_uri;
        } # จัดการโดย Certbot
    
    
        ถ้า ($host = betafox.net) {
            ส่งคืน 301 https://$host$request_uri; 
        } # จัดการโดย Certbot
    
        ฟัง 80;
        ฟัง [::]:80;
    
        #ชื่อเซิร์ฟเวอร์ _;
        รูท /var/www/html;
    
    ชื่อเซิร์ฟเวอร์ betafox.net *.betafox.net;
        #return 301 https://$host$request_uri;
        ดัชนี index.php index.html index.htm;
        ที่ตั้ง / {
            # try_files $uri $uri/ =404;
            try_files $uri $uri/ /index.php?q=$uri&$args;
            proxy_pass https://betafox.net/;
            proxy_redirect https://betafox.net/ $host;
            proxy_set_header ยอมรับการเข้ารหัส "";
            เปิด proxy_ssl_server_name;
        }
        ตำแหน่ง ~ \.php$ {
            รวมตัวอย่าง/fastcgi-php.conf;
            #fastcgi_pass 127.0.0.1:9000;
            #fastcgi_pass ยูนิกซ์:/run/php/php8.0-fpm.sock;
            fastcgi_pass ยูนิกซ์:/etc/alternatives/php-fpm.sock;
     }
    
    
    }
    
    เซิร์ฟเวอร์ {
    
    ฟัง 443 ssl default_server;
            ฟัง [::]:443 ssl default_server;
    
            รูท /var/www/html;
            ดัชนี index.php index.html index.htm;
    
          # ชื่อเซิร์ฟเวอร์ _;
            ชื่อเซิร์ฟเวอร์ betafox.net *.betafox.net;
            # ขนาดไฟล์อัพโหลดสูงสุดคือ 4MB - เปลี่ยนตามความจำเป็น
            client_max_body_size 512M;
            client_body_buffer_size 128k;
            รวมตัวอย่างข้อมูล/letsencrypt-nginx-certs.conf;
            รวมตัวอย่างข้อมูล/letsencrypt-nginx-route.conf;
    
            ที่ตั้ง / {
                    # try_files $uri $uri/ =404;
                    try_files $uri $uri/ /index.php?q=$uri&$args;
            }
    error_page 404 /404.html;
    
            error_page 500 502 503 504 /50x.html;
            ตำแหน่ง = /50x.html {
                    รูท /usr/share/nginx/html;
            }
    
            ตำแหน่ง ~ \.php$ {
                    รวมตัวอย่าง/fastcgi-php.conf;
                    #fastcgi_pass 127.0.0.1:9000;
                    #fastcgi_pass ยูนิกซ์:/var/run/php8.0-fpm.sock;
                    fastcgi_pass ยูนิกซ์:/etc/alternatives/php-fpm.sock;
            }
        ssl_certificate /etc/letsencrypt/live/betafox.net-0001/fullchain.pem; # จัดการโดย Certbot
        ssl_certificate_key /etc/letsencrypt/live/betafox.net-0001/privkey.pem; # จัดการโดย Certbot
    
    }

ส่วนใหญ่ได้รับการแก้ไขโดยอัตโนมัติโดย Certbot เมื่อฉันติดตั้งใบรับรอง SSL สำหรับทั้ง FQDN และโดเมนย่อยของฉัน ปัญหาที่ฉันพบคือการเปลี่ยนเส้นทาง URL URL เดิมคือ www.betafox.netเมื่อผู้ใช้ประเภท betafox.net ถูกเปลี่ยนเส้นทางไป https://betafoxnet.www.betafox.net/ และมีข้อความแจ้งว่า: ไม่มีไซต์ที่คุณกำลังมองหาอยู่

ฉันแค่ต้องการให้ผู้ใช้ทุกคนที่พิมพ์ betafox.net ได้รับการส่งต่อ www.betafox.net. ฉันเชื่อว่า Nginx สามารถทำได้ ฉันจะบรรลุสิ่งนั้นได้อย่างไร

djdomi avatar
za flag
ลบส่วน regex แรก ฉันสับสนจริงๆ ที่ certbot ยังคงใช้ if else แทนการเปลี่ยนเส้นทางพื้นฐาน
AtomX avatar
fr flag
จะไม่ส่งผลกระทบต่อโดเมนย่อย SSL Cert หรือไม่ ฉันใช้ Wildcard SSL Certificate แล้ว
Score:1
ธง us

น่าเสียดายที่ Certbot สร้างการเปลี่ยนเส้นทาง nginx โดยใช้ ถ้า กับ $โฮสต์ ตัวแปรที่เป็นปัญหา

ทางที่ดีควรเปลี่ยนเส้นทางแยกจากกัน เซิร์ฟเวอร์ ส่วนดังต่อไปนี้

# เปลี่ยนเส้นทางคำขอทั้งหมดไปยัง URL ของ betafox.net ไปยัง URL www.betafox.net ที่เกี่ยวข้อง
เซิร์ฟเวอร์ {
    ฟัง 80;
    ฟัง 443 ssl http2;

    ssl_certificate /etc/letsencrypt/live/betafox.net-0001/fullchain.pem; # จัดการโดย Certbot
    ssl_certificate_key /etc/letsencrypt/live/betafox.net-0001/privkey.pem; # จัดการโดย Certbot

    server_name betafox.net;

    ส่งคืน 301 https://www.betafox.net$request_uri;
}

# เปลี่ยนเส้นทางคำขอ HTTP ของโดเมนย่อยอื่นทั้งหมดไปยัง HTTPS
เซิร์ฟเวอร์ {
    ฟัง 80;

    ชื่อเซิร์ฟเวอร์ *.betafox.net;

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

# ลบบล็อกเซิร์ฟเวอร์สำหรับพอร์ต 80 มันดูไม่มีความหมาย

เซิร์ฟเวอร์ {
    # ลบ default_server แล้ว default_server ไม่ควรเป็นเว็บไซต์จริง
    ฟัง 443 ssl;
    ฟัง [::]:443 ssl;

    รูท /var/www/html;
    ดัชนี index.php index.html index.htm;

    ชื่อเซิร์ฟเวอร์ betafox.net *.betafox.net;
    # ขนาดไฟล์อัพโหลดสูงสุดคือ 4MB - เปลี่ยนตามความจำเป็น
    client_max_body_size 512M;
    client_body_buffer_size 128k;
    รวมตัวอย่างข้อมูล/letsencrypt-nginx-certs.conf;
    รวมตัวอย่างข้อมูล/letsencrypt-nginx-route.conf;

    ที่ตั้ง / {
        try_files $uri $uri/ /index.php?q=$uri&$args;
    }
    error_page 404 /404.html;

    error_page 500 502 503 504 /50x.html;
    ตำแหน่ง = /50x.html {
        รูท /usr/share/nginx/html;
    }

    ตำแหน่ง ~ \.php$ {
        รวมตัวอย่าง/fastcgi-php.conf;
        fastcgi_pass ยูนิกซ์:/etc/alternatives/php-fpm.sock;
    }
    ssl_certificate /etc/letsencrypt/live/betafox.net-0001/fullchain.pem; # จัดการโดย Certbot
    ssl_certificate_key /etc/letsencrypt/live/betafox.net-0001/privkey.pem; # จัดการโดย Certbot
}
AtomX avatar
fr flag
มันใช้งานได้ดี แต่มี `nginx: [warn] ชื่อเซิร์ฟเวอร์ที่ขัดแย้งกัน "betafox.net" ใน 0.0.0.0:443 ไม่สนใจคำเตือน
AtomX avatar
fr flag
BTW มีบางอย่างทำให้เกิด NS_ERROR_REDIRECT_LOOP
AtomX avatar
fr flag
ไม่พบข้อผิดพลาดนั้นในรูทของไซต์ แต่อยู่ในส่วนผู้ดูแลระบบเครือข่ายของฉัน Nginx กำลังส่งคืนรหัสตอบกลับ 302 ที่นั่น
AtomX avatar
fr flag
ขออภัย... เมื่อฉันเปลี่ยนชื่อฐานข้อมูล ฉันลืมเปลี่ยนชื่อข้อมูลของ wp_blog และนั่นเป็นสาเหตุของการเปลี่ยนเส้นทางจำนวนมาก...

โพสต์คำตอบ

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