Mengizinkan Wordpress dihosting di subfolder dalam situs yang sudah ada

Kami mendapat permintaan dari klien di mana kami perlu meng-host situs wordpress di dalam situs web kami. Maksud saya, situs tersebut tidak dapat ditempatkan di subdomain, yaitu https://blog.example.com, melainkan harus berada di rute/subfoldernya sendiri, yaitu https://www.example.com/blog. Hal ini disebabkan oleh peringkat halaman (ternyata peringkat halaman dikenakan sanksi jika ditempatkan di subdomain)

Masalahnya adalah, situs kami tidak dijalankan dalam PHP (ditulis dalam Scala yang berjalan di Jetty). Selain itu, situs utama kami dijalankan dari container Docker yang didukung oleh Nginx.

Idealnya saya ingin meng-host Wordpress di server tunggalnya sendiri (baik Docker dalam container atau tidak, ini bukan masalah besar), dan dalam konfigurasi nginx untuk situs utama kami, balikkan ke server eksternal untuk URL spesifik (yaitu https://www.example.com/blog akan menunjuk ke IP/host server eksternal yang menjalankan wordpress)

Bagaimana Anda mencapainya/apakah mungkin? Ini adalah nginx.conf saat ini untuk server utama kami

server {
    listen 80;
    listen [::]:80;
    listen       443 default_server ssl;
    server_name  www.example.com.au;

    ssl_certificate      /etc/nginx/cert.crt;
    ssl_certificate_key  /etc/nginx/cert.key;

    ssl_session_cache shared:SSL:1m;
    ssl_session_timeout  5m;

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    ssl_ciphers "EECDH+ECDSA+AESGCM:EECDH+aRSA+AESGCM:EECDH+ECDSA+SHA256:EECDH+aRSA+SHA256:EECDH+ECDSA+SHA384:EECDH+ECDSA+SHA256:EECDH+aRSA+SHA384:EDH+aRSA+AESGCM:EDH+aRSA+SHA256:EDH+aRSA:EECDH:!aNULL:!eNULL:!MEDIUM:!LOW:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS:!RC4:!SEED";

    add_header Strict-Transport-Security "max-age=31536000; includeSubdomains";

    if ($scheme = http) {
        return 301 https://$server_name$request_uri;
    }

    location / {
         proxy_pass http://localhost:8080;
         proxy_redirect http://www.example.com.au /;
         proxy_set_header    Host            $host;
         proxy_set_header    X-Real-IP       $remote_addr;
         proxy_set_header    X-Forwarded-for $remote_addr;
         proxy_read_timeout 600s;
         port_in_redirect off;
    }
}

Ini adalah contoh nginx.conf kami saat ini, seperti yang Anda lihat, situs web sebenarnya dihosting di localhost:8080 dan kami hanyalah pengalihan proxy untuk situs utama.


person mdedetrich    schedule 17.07.2015    source sumber


Jawaban (1)


Asumsikan layanan wordpress dihosting di http://localhost:8081, maka Anda cukup proxy_pass permintaan /blog ke http://localhost:8081, Anda cukup menambahkan blok berikut ke blok nginx server Anda:

    location ^~ /blog {
         proxy_pass http://localhost:8081;
    }
person Freeznet    schedule 17.07.2015