33466


静的なhtmlが大半を占めるウェブサイトでDjangoアプリケーションを組み込むこととなりましたが、`http://example.com/contact`や`http://example.com/contact/<id>`の場合のみDjangoアプリケーションにアクセスさせるにはnginx.confをどのように改修すれば良いでしょうか。

Djangoアプリケーション自体はすでにデプロイ済みです。  
また、下記のconfファイルをnginx.confのhttp{ }にincludeさせています。

[code]

    upstream django {
        server x.x.x.x:8000;
    }
    
    server {
        listen      80;
        server_name xx.xx.xxx.xxx;
        charset     utf-8;
        client_max_body_size 100M;
    
        location /static {
            alias /opt/django/static;
        }
    
        location / {
            uwsgi_pass  django;
            include    /opt/django/uwsgi_params;
        }
    }
    
[/code]


CC BY-SA 3.0
2017-03-22T08:19:49.977
33457
2017-03-22T16:25:22.660
2017-03-22T13:09:52.093
2238
19780
question
centos nginx django
nginxで一部のURLへアクセスした場合のみdjangoアプリケーションへ接続させたい


下記のような感じでいけると思います。

[code]

    server {
        listen      80;
        server_name xx.xx.xxx.xxx;
        charset     utf-8;
        client_max_body_size 100M;
    
        location /static {
            alias /opt/django/static;
        }
    
        location ~ /(contact|extra)/ {
            uwsgi_pass  django;
            include    /opt/django/uwsgi_params;
        }
    
        location / {
             root /var/www/html;
        }
    }
    
[/code]

複数のパスでDjangoアプリに流したい場合も考慮して正規表現でURLパスをマッチしています。

この例ですと下記のようなアクセスになります。

[code]

    http://xx.xx.xxx.xxx/contact/  # => contact以下全てを Djangoアプリ にプロキシ
    http://xx.xx.xxx.xxx/extra/    # => extra以下全てを Djangoアプリ にプロキシ
    http://xx.xx.xxx.xxx/          # => それ以外を /var/www/html 以下のコンテンツから取得
    
[/code]


CC BY-SA 3.0
2017-03-22T16:25:22.660
33466
2017-03-22T16:25:22.660
2168
33457
answer