Ответы пользователя по тегу Nginx
  • Какой конфиг нужен для nginx (переход от if к map)?

    shurph
    @shurph
    Приведите map к такому виду:
    map $http_user_agent $url {
    	    ~.*BPC.[3].* /eset_upd/v3/update.ver;
    	    ~.*BPC.[4].* /eset_upd/v4/update.ver;
    	    ~.*BPC.[5].* /eset_upd/v5/update.ver;
    	    ~.*BPC.[6].* /eset_upd/v6/update.ver;
    	    ~.*BPC.[7].* /eset_upd/v7/update.ver;
    	}
    Ответ написан
  • Как сделать редирект на nginx, чтобы он учитывался гугл аналитикой за отдельный источник трафика?

    shurph
    @shurph
    Конфиг должен выглядеть как-то вот так (только нужно ещё подшаманить регулярные выражения, чтобы нормально обрабатывались случаи отсутствия get параметров в оригинальном запросе (я оставил комментарии в этом месте конфига)):
    server {
    	listen 80;
    	server_name dom1.com;
    	
    	root /vhosts/dom/www;
    	index index.html index.htm index.php;
    	location ~ \.php$ {
    		fastcgi_split_path_info ^(.+\.php)(/.+)$;
    		fastcgi_pass unix:/var/run/php5-fpm-dom.sock;
    		fastcgi_index index.php;
    		root /vhosts/dom/www;
    		include fastcgi_params;
    	}
    	location / {
    		try_files $uri $uri/ /$uri /index.php?q=$uri$args /mailer.php?q=$uri$args /hecher.php?q=$uri$args;
    	}
    }
    server {
    	listen 80;
    	server_name www.dom1.com;
    	location / {
    		rewrite ^/(.*)$ dom1.com/$1 permanent;
    	}
    }
    server {
    	listen 80;
    	server_name www.dom2.com
    		dom2.com;
    	location / {
    		# будет работать, если во всех урлах передаётся какой-то get параметр
    		# т.е. оригинальная ссылка толжна быть dom2.com/?smthng=blabla, чтобы
    		# получить dom1.com/?smthng=blabla&utm_source=dom2.com&utm_medium=redirect
    		# иначе может получится нерабочая ссылка вида dom1.com/page/&utm_source=dom2.com&utm_medium=redirect
    		rewrite ^/(.*)$ dom1.com/$1&utm_source=dom2.com&utm_medium=redirect permanent;
    	}
    }
    Ответ написан
    Комментировать
  • Как настроить Nginx reverse proxy для всех портов?

    shurph
    @shurph
    Похоже, что проксировать все порты автоматически не получится. Для каждого порта нужно будет прописывать в конфиге строчки отдельно. Для вашего примера понадобится что-то такое:
    server {
        listen 22;
        server_name example1.com;
        location / {
            proxy_pass http://192.168.1.1:22;
        }
    }
    server {
        listen 22;
        server_name example2.com;
        location / {
            proxy_pass http://192.168.1.2:22;
        }
    }


    про remote_addr почитайте вот это:
    habrahabr.ru/post/177113
    На сколько я понимаю, поместить в remote_addr адрес пользователя не получится на стороне nginx'а.

    UPD (на основе дискуссии в комментариях):
    у меня есть сомнения, что такое возможно настроить с помощью nginx (да и вообще — настроить).
    Во первых, nginx — это http сервер и, соответственно, http прокси (разве что ещё почтовые протоколы он поддерживает). Если нужны другие протоколы, то и использовать стоит другие решения.

    Во вторых, я очень не уверен, что при подключении по другим протоколам вы сможете определить, что пользователь подключается к домену example1.com, а не к example2.com.
    Ведь как определяется домен в случае http? Браузер передаёт такой запрос на сервер, подключаясь к example1.com:

    GET / HTTP/1.0
    Host: example1.com
    Ответ написан
    3 комментария