首页 > 解决方案 > 最后带有点的请求会给出错误的请求 400

问题描述

如果我访问,这是我的配置

https://www.example.com.

最后的点不起作用

# the upstream component nginx needs to connect to
upstream django {
    server unix:///tmp/example.sock; # for a file socket
}

# Redirect
server {
    listen 80;
    listen 443 ssl;
    ssl_certificate /etc/nginx/ssl/ssl-bundle.crt;
    ssl_certificate_key /etc/nginx/ssl/example.key;
    rewrite ^(.*) $scheme://www.example.com$1 permanent;
}


# SSL Request
server {
    listen 443;
    server_name www.example.com;
    root /var/www/example;
    charset utf-8;

    # max upload size
    client_max_body_size 75M;   # adjust to taste

    ssl on;
    ssl_certificate /etc/nginx/ssl/ssl-bundle.crt;
    ssl_certificate_key /etc/nginx/ssl/example.key;
    ssl_protocols TLSv1.2 TLSv1.1;

    # Django media
    location /uploads  {
        alias /var/www/example/uploads;  # your Django project's media files - amend as required
        expires 7d;
    }

    location /static {
        alias /var/www/example/static; # your Django project's static files - amend as required
        expires 7d;
    }

    location /favicon.ico {
        alias /var/www/example/static/img/favicon.ico; # your Django project's static files - amend as required
    }

    location /robots.txt {
        alias /var/www/example/robots.txt; # robots.txt
    }

    location /ntat {
        uwsgi_pass  django;
        include     uwsgi_params;
    }

    location / {
        rewrite ^(.*) http//www.example.com$1;
    }
}

# Normal Request
server {
    # the port your site will be served on
    listen 80;
    # the domain name it will serve for
    server_name www.example.com
    charset utf-8;

    # max upload size
    client_max_body_size 75M;   # adjust to taste

    location /ntat {
        rewrite ^(.*) https://www.example.com$1;
   }

   # Django media
    location /uploads  {
        alias /var/www/example/uploads;  # your Django project's media files - amend as required
        expires 7d;
    }
    location /ntat {
        rewrite ^(.*) https://www.example.com$1;
   }

   # Django media
    location /uploads  {
        alias /var/www/exam/uploads;  # your Django project's media files - amend as required
        expires 7d;
    }

    location /static {
        alias /var/www/example/static; # your Django project's static files - amend as required
        expires 7d;
    }

    location /favicon.ico {
        alias /var/www/example/static/img/favicon.ico; # your Django project's static files - amend as required
    }

    location /robots.txt {
        alias /var/www/example/robots.txt; # robots.txt
    }

    location /timepass  {
        alias /var/www/timepass;  # Snake Game
    }

    # Finally, send all non-media requests to the Django server.
    location / {
       rewrite ^(.*) https://www.example.com$1;
       uwsgi_pass  django;
       include     uwsgi_params;
       uwsgi_read_timeout 180;
    }
}

标签: djangonginxuwsginginx-location

解决方案


  • default_server根据需要确保
  • 不要rewrite在可以简单的地方使用return
  • 始终指定以确保sserver_name之间没有不同的优先级server
  • 备注http//www.example.com$1;(缺失:

NGINX的服务器名称与 不同www.example.com.,但您没有专门侦听点分域的服务器名称,因此最好使用默认服务器来标记确保正确匹配的块。www.example.comserverserver

# the upstream component nginx needs to connect to
upstream django {
    server unix:///tmp/example.sock; # for a file socket
}

# Redirect for example.com -> www.example.com (both ports)
server {
    listen 80;
    listen 443 ssl;
    server_name example.com;
    ssl_certificate /etc/nginx/ssl/ssl-bundle.crt;
    ssl_certificate_key /etc/nginx/ssl/example.key;
    return 301 $scheme://www.example.com$request_uri permanent;
}


# SSL Request
server {
    listen 443 default_server;
    server_name www.example.com;
    root /var/www/example;
    charset utf-8;

    # max upload size
    client_max_body_size 75M;   # adjust to taste

    ssl on;
    ssl_certificate /etc/nginx/ssl/ssl-bundle.crt;
    ssl_certificate_key /etc/nginx/ssl/example.key;
    ssl_protocols TLSv1.2 TLSv1.1;

    # Django media
    location /uploads  {
        alias /var/www/example/uploads;  # your Django project's media files - amend as required
        expires 7d;
    }

    location /static {
        alias /var/www/example/static; # your Django project's static files - amend as required
        expires 7d;
    }

    location /favicon.ico {
        alias /var/www/example/static/img/favicon.ico; # your Django project's static files - amend as required
    }

    location /robots.txt {
        alias /var/www/example/robots.txt; # robots.txt
    }

    location /ntat {
        uwsgi_pass  django;
        include     uwsgi_params;
    }

    location / {
        rewrite ^(.*) http//www.example.com$1;
    }
}

# Normal Request
server {
    # the port your site will be served on
    listen 80 default_server;
    # the domain name it will serve for
    server_name www.example.com
    charset utf-8;

    # max upload size
    client_max_body_size 75M;   # adjust to taste

    location /ntat {
        rewrite ^(.*) https://www.example.com$1;
   }

   # Django media
    location /uploads  {
        alias /var/www/example/uploads;  # your Django project's media files - amend as required
        expires 7d;
    }
    location /ntat {
        rewrite ^(.*) https://www.example.com$1;
   }

   # Django media
    location /uploads  {
        alias /var/www/exam/uploads;  # your Django project's media files - amend as required
        expires 7d;
    }

    location /static {
        alias /var/www/example/static; # your Django project's static files - amend as required
        expires 7d;
    }

    location /favicon.ico {
        alias /var/www/example/static/img/favicon.ico; # your Django project's static files - amend as required
    }

    location /robots.txt {
        alias /var/www/example/robots.txt; # robots.txt
    }

    location /timepass  {
        alias /var/www/timepass;  # Snake Game
    }

    # Finally, send all non-media requests to the Django server.
    location / {
       rewrite ^(.*) https://www.example.com$1;
       uwsgi_pass  django;
       include     uwsgi_params;
       uwsgi_read_timeout 180;
    }
}

推荐阅读