मेरे पास एक Django ऐप है जो एक डोमेन पर चल रहा है उदा। www.example.com

मैं एक वर्डप्रेस लैंडिंग पेज बनाना चाहता हूं, और इस लैंडिंग पेज को होम यूआरएल www.example.com और वर्डप्रेस एडमिन साइट को www.example.com/admin या www.example.com/wp-admin पर इंगित करना चाहता हूं। अन्य सभी यूआरएल Django द्वारा परोसा जाना चाहिए।

इसलिए मुझे चाहिए:

  • www.example.com -> वर्डप्रेस
  • www.example.com/admin या www.example.com/wp-admin -> wordpress
  • अन्य सभी URL जिन्हें Django द्वारा परोसा जाना है

अब तक, यह Django का उपयोग करके मेरा Nginx कॉन्फ़िगरेशन है:

upstream django_server {
    server unix:/path/to/gunicorn.sock fail_timeout=0;
}

server {

    listen   80;
    server_name www.example.com example.com
    client_max_body_size 4G;

    access_log /path/to/nginx-access.log;
    error_log /path/to/nginx-error.log;

    location /static/ {
        alias   /path/to/static/;
    }

    location /media/ {
        alias   /path/to/media/;
    }

    location / {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        if (!-f $request_filename) {
            proxy_pass http://django_server;
            break;
        }
    }

    error_page 500 502 503 504 /500.html;
    location = /500.html {
        root /path/to/static/;
    }
}

किसी भी तरह की सहायता का स्वागत किया जाएगा।

2
Sakis Brouzioutis 28 मार्च 2017, 13:38

1 उत्तर

सबसे बढ़िया उत्तर

वर्डप्रेस URL के अनिश्चित सेट का उपयोग करता है और इसलिए उसके और Django के लिए उपलब्ध URL के सेट के बीच एक स्पष्ट विभाजन होना महत्वपूर्ण है। सबसे अच्छा समाधान वर्डप्रेस को एक उपनिर्देशिका में रखना है (जो आश्चर्यजनक रूप से आसान है)।

उदाहरण के लिए:

server {
    ...
    # existing Django configuration
    ...

    location = / {
        return $scheme://$host/blog/;
    }
    location ^~ /blog {
        alias /path/to/wordpress;

        index index.php;
        if (!-e $request_filename) { rewrite ^ /blog/index.php last; }

        location ~ /wp-content/uploads/ { expires 30d; }

        location ~ \.php$ {
            if (!-f $request_filename) { rewrite ^ /blog/index.php last; }

            include       fastcgi_params;
            fastcgi_param SCRIPT_FILENAME $request_filename;
            ...
        }
        location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ { 
            if (!-f $request_filename) { rewrite ^ /blog/index.php last; }
            expires 30d; 
        }
    }
}

आपको साइट और होम यूआरएल सेट करने होंगे। विवरण के लिए यह दस्तावेज़ देखें।

अधिक के लिए यह दस्तावेज़ देखें।

3
Richard Smith 28 मार्च 2017, 14:00
धन्यवाद @ रिचर्ड-स्मिथ। मैंने आपके समाधान की कोशिश की और यह काम करता है :)
 – 
Sakis Brouzioutis
28 मार्च 2017, 14:06
1
यह जल्दी था!
 – 
Richard Smith
28 मार्च 2017, 14:07