LINUX.ORG.RU

Nginx проксирование.

 


0

1

Всем привет! Возник вопрос как добавить второе перенаправление. Используется nginx без apache. Есть site.ru в днс указаны два ip 0.0.0.1 и 0.0.0.2. Один сервер используется как резервный. Для того что бы все пользователи попадали на нужный (основной) сервер в конфиге (0.0.0.2) nginx есть:

...
 location / {
        try_files $uri $uri/ /index.php?q=$uri&$args;
        proxy_pass http://0.0.0.1:80;
    }

На этом этапе всё в порядке. Возникла необходимость делать тоже самое для поддомена pod.site.ru. если в конфиге указывать «proxy_pass http://0.0.0.2:80;» то перенаправление соответственно идёт на 0.0.0.1 и отображается site.ru.

Собственно вопрос, как сделать что бы pod.site.ru с сервера 0.0.0.2 перенаправлял копию которая лежит на 0.0.0.1?


Собственно вопрос, как сделать что бы pod.site.ru с сервера 0.0.0.2 перенаправлял копию которая лежит на 0.0.0.1?

Нужно вместе с запросом проксировать ещё и header'ы оригинального запроса.

Y ★★
()
Ответ на: комментарий от Y

Добавил:

location / {
        try_files $uri $uri/ /index.php?q=$uri&$args;
            proxy_pass_request_headers      on;
            proxy_pass_header Server;
            proxy_pass_header Host;
            proxy_set_header X-Forwarded-For $remote_addr;
            proxy_set_header Host $host;
        proxy_pass http://0.0.0.1:80;

    }

Не помогло, как погуглить можно?

vagon
() автор топика
Ответ на: комментарий от vagon

Не уверен, что одновременно нужны

proxy_set_header Host $host; proxy_pass_header Host;

Но ломаться не должно, наверное.

Как настроен 0.0.0.1? Если на него по домену зайти, корректно открывается?

Y ★★
()
Ответ на: комментарий от Y

Кажется лыжи не едут. Каким то образом перестало работать проксирование, вот полные конфиги

site.conf

server {
#    listen       80;
	server_name  site.ru www.site.ru;
server_name_in_redirect on;
#Убрать / на конце страницы
location ~ .+/$ {
rewrite (.+)/$ $1 permanent;
}
# Убрать /////// на конце страницы
if ($request_uri ~ "^[^?]*?//") {
            rewrite "^" $scheme://$host$uri permanent;
        }
## редирект с www
if ($host ~* ^www\.(.+)$) {
set $newhost $1;
rewrite ^ http://$newhost$request_uri permanent;
}
charset utf-8;
        access_log  /var/log/nginx/site.ru.access.log;
        error_log /var/log/nginx/site.ru.error.log;
#
    sendfile on;	

	root   /var/www/site.ru/public/;
	index index.php index.html index.htm;
	client_max_body_size 100m;

    location / {
        try_files $uri $uri/ /index.php?q=$uri&$args;
	proxy_pass http://0.0.0.1:80;
        proxy_set_header    Host            $host;
        proxy_set_header    X-Real-IP       $remote_addr;
        proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_connect_timeout 900;



    }
location ~* \.(css|js|gif|jpe?g|png|jpg)$ {
                expires 7d;
                add_header Pragma public;
                add_header Cache-Control "public, must-revalidate, proxy-revalidate";
                } 

	location = /favicon.ico { access_log off; log_not_found off; }
	location = /robots.txt  { access_log off; log_not_found off; }


    error_page  404              /404.html;


 location ~* ^/.+\.php {

                root /var/www/site.ru/public;
	        try_files $uri /index.php =404;
		fastcgi_pass 127.0.0.1:9000;
                fastcgi_index index.php;
                include fastcgi_params;

		fastcgi_param  SCRIPT_FILENAME /var/www/site.ru/public$fastcgi_script_name;
	    fastcgi_pass_header Cookie;
            fastcgi_ignore_headers Cache-Control Expires Set-Cookie;
            fastcgi_cache_key "$server_addr:$server_port$request_uri|$cookie_phpsessid";
            fastcgi_cache fastcgi_cache;
            fastcgi_temp_path  /tmp/nginx/temp 1 2;
            fastcgi_cache_use_stale updating error timeout invalid_header http_500;
            fastcgi_cache_valid 15s;

            }
}

nginx.conf

user  nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


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

fastcgi_cache_path /tmp/nginx/ levels=1:2 keys_zone=fastcgi_cache:16m max_size=256m inactive=1d;
#
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;
    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

    include /etc/nginx/conf.d/*.conf;
}

vagon
() автор топика
Ответ на: комментарий от vagon

Если привести конфиг к простому виду:

	
server {
        server_name  site.ru www.site.ru;
    location / {
         proxy_pass http://0.0.0.1:80;
    }
проксирование работает, не пойму где затык

vagon
() автор топика
Ответ на: комментарий от vagon

Разобрался. Нужно закомментировать строчку для работы ларавела, и сразу всё заработало как надо.

...
location / {
#       try_files $uri $uri/ /index.php?q=$uri&$args;
            proxy_pass http://0.0.0.1:80;
            proxy_pass_request_headers      on;
            proxy_pass_header Server;
            proxy_set_header X-Forwarded-For $remote_addr;
            proxy_set_header Host $host;

    }
vagon
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.