Nginx重定向www。错误的虚拟主机

牙仙子

嗯,我有问题...

浏览器重定向我的3个虚拟站点www.site1.com www.site2.com www.site3.com到www.site1.com,只有当我使用http://site3.com / http://site2.com它的工作原理和正确重定向。

更简单地说,我的问题是http://正确重定向到我的虚拟实体,而www则没有。

www.site2.com -> www.site1.com     (redirects to wrong vhost)
http://site2.com -> www.site2.com  works!



我的设置是Nginx + Gunicorn + Django,但是我坚信这是我的Nginx配置中的问题。



Nginx.conf

user www-data;
worker_processes 4;
pid /run/nginx.pid;

events {
        worker_connections 768;
        # multi_accept on;
}

http {

        ##
        # Basic Settings
        ##

        sendfile on;
        tcp_nopush on;
        tcp_nodelay on;
        keepalive_timeout 65;
        types_hash_max_size 2048;



        include /etc/nginx/mime.types;
        default_type application/octet-stream;

        ##
        # Logging Settings
        ##

        access_log /var/log/nginx/access.log;
        error_log /var/log/nginx/error.log;

        ##
        # Gzip Settings
        ##

        gzip on;
        gzip_disable "msie6";

    text/javascript;



        ##
        # Virtual Host Configs
        ##


        include /etc/nginx/conf.d/*.conf;
        include /etc/nginx/sites-enabled/*;
}



我的虚拟主机:

MYSITE(/ etc / nginx /启用了站点的/站点)

upstream mysite_app_server {
  # fail_timeout=0 means we always retry an upstream even if it failed
  # to return a good HTTP response (in case the Unicorn master nukes a
  # single worker for timing out).

  server unix:/webapps/mysite/run/gunicorn.sock fail_timeout=0;
}

server {

    listen   80;
    server_name mysite.com;

    client_max_body_size 4G;

    access_log /webapps/mysite/logs/nginx-access.log;
    error_log /webapps/mysite/logs/nginx-error.log;

    location /static/ {
        alias   /webapps/mysite/static/;
    }

    location /media/ {
        alias   /webapps/mysite/mysite/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://mysite_app_server;
            break;
        }

        include includes/botblock;

    }

    # Error pages
    error_page 500 502 503 504 /500.html;
    location = /500.html {
        root /webapps/mysite/static/;
    }
}



MYSITE2(/ etc / nginx / sites-enabled / site2)

upstream mysite2_app_server {
      # fail_timeout=0 means we always retry an upstream even if it failed
      # to return a good HTTP response (in case the Unicorn master nukes a
      # single worker for timing out).

      server unix:/webapps/mysite2/run/gunicorn.sock fail_timeout=0;
    }

    server {

        listen   80;
        server_name mysite2.com;

        client_max_body_size 4G;

        access_log /webapps/mysite2/logs/nginx-access.log;
        error_log /webapps/mysite2/logs/nginx-error.log;

        location /static/ {
            alias   /webapps/mysite2/static/;
        }

        location /media/ {
            alias   /webapps/mysite2/mysite2/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://mysite2_app_server;
                break;
            }

            include includes/botblock;

        }

        # Error pages
        error_page 500 502 503 504 /500.html;
        location = /500.html {
            root /webapps/mysite2/static/;
        }
    }



MYSITE3(/ etc / nginx / sites-enabled / site3)

upstream mysite3_app_server {
  # fail_timeout=0 means we always retry an upstream even if it failed
  # to return a good HTTP response (in case the Unicorn master nukes a
  # single worker for timing out).

  server unix:/webapps/mysite3/run/gunicorn.sock fail_timeout=0;
}



server {

    listen   80;
    server_name mysite3.com;

    client_max_body_size 4G;

    access_log /webapps/mysite3/logs/nginx-access.log;
    error_log /webapps/mysite3/logs/nginx-error.log;

    location /static/ {
        alias   /webapps/mysite3/static/;
    }

    location /media/ {
        alias   /webapps/mysite3//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://mysite3_app_server;
            break;
        }

        include includes/botblock;

    }

    # Error pages
    error_page 500 502 503 504 /500.html;
    location = /500.html {
        root /webapps/mysite3/static/;
    }
}
肉体粉碎机

我不会清理和验证您的配置文件,但是它们包含一些问题,您应该将其干燥

关于你的实际问题。

  1. 您尚未配置任何重定向,因此nginx乐意将那些子域重定向到您的默认服务器。
  2. 您还没有配置的默认服务器和nginx的仅仅是使用第一个定义的服务器为默认服务器(在你的情况site,因为site2site3来了,是一个后,简单的排序)。

实际的解决方案是为每个服务器配置要发生的重定向。该摘录取自对类似问题的另一个答案

server {
    #listen 80 is default
    server_name www.example.com;
    return 301 $scheme://example.com$request_uri;
}

server {
    #listen 80 is default
    server_name example.com;
    ## here goes the rest of your conf...
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

大量虚拟主机和重写规则导致递归内部重定向

来自分类Dev

重定向到Apache虚拟主机文件中的子文件夹

来自分类Dev

在Nginx中包括虚拟主机文件

来自分类Dev

阿帕奇:禁用重定向到默认的虚拟主机上不匹配的服务器名称

来自分类Dev

虚拟主机-所有主机均重定向到WAMP本地主机的“主页”页面

来自分类Dev

nginx虚拟主机:php5-fpm-sock错误

来自分类Dev

虚拟主机和www重定向导致无限重定向

来自分类Dev

虚拟主机重定向到IP地址

来自分类Dev

Nginx虚拟主机不起作用(错误的重定向)

来自分类Dev

Nginx虚拟主机缓存符号链接

来自分类Dev

Apache非虚拟主机重定向

来自分类Dev

XAMPP Apache将我的虚拟主机重定向到/ dashboard

来自分类Dev

nginx正在从一台虚拟主机重定向到另一台虚拟主机

来自分类Dev

虚拟主机强制使用https并将www重定向到非www,但没有其他子域

来自分类Dev

重定向到Apache虚拟主机文件中的子文件夹

来自分类Dev

将DNS重定向到新的虚拟主机

来自分类Dev

具有自签名证书的Apache 2.4始终重定向到默认虚拟主机

来自分类Dev

http到http将apache中的虚拟主机重定向

来自分类Dev

nginx虚拟主机:php5-fpm-sock错误

来自分类Dev

使用Nginx创建虚拟主机

来自分类Dev

虚拟主机重定向到默认值

来自分类Dev

使用以https开头的虚拟主机域名进行重定向

来自分类Dev

仅针对服务器名的Apache虚拟主机重定向

来自分类Dev

Apache虚拟主机将http重定向到https

来自分类Dev

无法使用Apache RewriteRule将请求从一个虚拟主机重定向到另一虚拟主机

来自分类Dev

Nginx 虚拟主机仅在域的 www 变体上提供静态文件

来自分类Dev

重定向到一个影响所有的虚拟主机文件

来自分类Dev

ubuntu 正在将所有虚拟主机重定向到 https?

来自分类Dev

通过 www.example.com 在 localhost:8000 上重定向 wordpress 的 Apache 虚拟主机

Related 相关文章

  1. 1

    大量虚拟主机和重写规则导致递归内部重定向

  2. 2

    重定向到Apache虚拟主机文件中的子文件夹

  3. 3

    在Nginx中包括虚拟主机文件

  4. 4

    阿帕奇:禁用重定向到默认的虚拟主机上不匹配的服务器名称

  5. 5

    虚拟主机-所有主机均重定向到WAMP本地主机的“主页”页面

  6. 6

    nginx虚拟主机:php5-fpm-sock错误

  7. 7

    虚拟主机和www重定向导致无限重定向

  8. 8

    虚拟主机重定向到IP地址

  9. 9

    Nginx虚拟主机不起作用(错误的重定向)

  10. 10

    Nginx虚拟主机缓存符号链接

  11. 11

    Apache非虚拟主机重定向

  12. 12

    XAMPP Apache将我的虚拟主机重定向到/ dashboard

  13. 13

    nginx正在从一台虚拟主机重定向到另一台虚拟主机

  14. 14

    虚拟主机强制使用https并将www重定向到非www,但没有其他子域

  15. 15

    重定向到Apache虚拟主机文件中的子文件夹

  16. 16

    将DNS重定向到新的虚拟主机

  17. 17

    具有自签名证书的Apache 2.4始终重定向到默认虚拟主机

  18. 18

    http到http将apache中的虚拟主机重定向

  19. 19

    nginx虚拟主机:php5-fpm-sock错误

  20. 20

    使用Nginx创建虚拟主机

  21. 21

    虚拟主机重定向到默认值

  22. 22

    使用以https开头的虚拟主机域名进行重定向

  23. 23

    仅针对服务器名的Apache虚拟主机重定向

  24. 24

    Apache虚拟主机将http重定向到https

  25. 25

    无法使用Apache RewriteRule将请求从一个虚拟主机重定向到另一虚拟主机

  26. 26

    Nginx 虚拟主机仅在域的 www 变体上提供静态文件

  27. 27

    重定向到一个影响所有的虚拟主机文件

  28. 28

    ubuntu 正在将所有虚拟主机重定向到 https?

  29. 29

    通过 www.example.com 在 localhost:8000 上重定向 wordpress 的 Apache 虚拟主机

热门标签

归档