nginx инвертируют прокси не передающие запросы

У меня есть домен (example.com) и субдомен (sub.example.com) оба размещенные на том же сервере. Я хочу проксировать запрос, таким образом, любой файл, который требуют на http://sub.example.com/api/, будут требовать на http://example.com/api/ (наряду с аргументами), Вот мой код nginx из sub.example.com:

location /api {
    rewrite /api/(.*) /api/$1 break;
    proxy_pass http://example.com/api;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_redirect off;
    proxy_buffering off;
}

Это не работает на меня. Какой работы:

location ~* ^/api/(.*)$ {
    rewrite ^/api/(.*)$ http://example.com/api/$1 last;
}

Править: я забыл говорить, что мое определение сервера содержит еще некоторые правила относительно платформы Yii и парсинга php файлов. Вот полный оператор сервера:

server {
        listen 80;
        server_name sub.example.com;
        access_log /var/log/nginx/sub.example.com.access_log main;
        error_log /var/log/nginx/sub.example.com.error_log info;
        root /var/www/localhost/htdocs/sub.example.com;
        index index.php index.html index.htm default.html default.htm;

#       location ~* ^/api/(.*)$ {
#                       rewrite ^/api/(.*)$ http://example.com/api/$1 last;
#               }

        location /api {
                        rewrite /api/(.*) /api/$1 break;
                        proxy_pass http://example.com/api;
                        proxy_set_header X-Real-IP $remote_addr;
                        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#                        proxy_set_header Host $http_host;
                        proxy_redirect off;
                        proxy_buffering off;
                        break;
        }

        location / {
                if (-f $request_filename) {
                        #expires max;
                        break;
                }
                if (!-e $request_filename) {
                        rewrite ^/(.*)$ /index.php?/$1 last;
                }
        }
        location /index.php {
                include /etc/nginx/fastcgi.conf;
                fastcgi_index index.php;
                fastcgi_param SCRIPT_FILENAME /path-to/index.php;
                fastcgi_param  REQUEST_URI      $request_uri;
                fastcgi_param  QUERY_STRING     $query_string;
                fastcgi_param  REQUEST_METHOD   $request_method;
                fastcgi_param  CONTENT_TYPE     $content_type;
                fastcgi_param  CONTENT_LENGTH   $content_length;
                fastcgi_pass 127.0.0.1:9000;
        }


        location ~ \.php$ {
                        fastcgi_pass  127.0.0.1:9000;
                        include /etc/nginx/fastcgi.conf;
                        fastcgi_index index.php;
                        fastcgi_intercept_errors on; # for easier debug
                }
}
5
задан 1 October 2014 в 12:47
1 ответ

നിങ്ങൾ പ്രാരംഭ അഭ്യർത്ഥന ഹോസ്റ്റ് തലക്കെട്ട് sub.example.com മുതൽ example.com :

proxy_set_header Host $http_host;

അഭ്യർത്ഥന പ്രോക്സി ചെയ്യുന്നതിലൂടെ, ഇത് നിങ്ങളുടെ സജ്ജീകരണത്തെ ആശ്രയിച്ച് sub.example.com vhost അല്ലെങ്കിൽ സ്ഥിരസ്ഥിതി vhost- ൽ വീഴില്ല, example.com vhost അല്ല.

ഈ വരി നീക്കംചെയ്യുക.

1
ответ дан 3 December 2019 в 02:03

Теги

Похожие вопросы