Quantcast
Channel: Nginx Forum - Nginx Mailing List - Russian
Viewing all 3102 articles
Browse latest View live

Re: sticky route и ASP.NET SessionId (no replies)

$
0
0
Hello!

On Sat, Nov 01, 2014 at 05:45:05PM -0400, iskander wrote:

> Здравствуйте!
>
> Прошу помощи в настройке конфига.
>
> Есть два IIS, перед ними балансировщиком стоит Nginx-plus, во всех примерах
> маршрут выбирается по JSESSIONID
> при указании ASP.NET_SessionId вместо JSESSIONID перестает "держать" на
> одном и том-же IIS.
>
> upstream backend {
> #ip_hash;
> #hash consistent;
>
> server 192.168.11.2 weight=2 max_fails=3 fail_timeout=120;
> server 192.168.11.3 weight=2 max_fails=3 fail_timeout=120;
>
> sticky learn create=$upstream_cookie_ASP.NET_SessionId
> lookup=$cookie_ASP.NET_SessionId zone=client_sessions:1m;
> }
>
> Как сделать чтоб использовалась кука "ASP.NET_SessionId" не нашел рабочих
> примеров нигде :(

Проблема в том, что кука с именем ASP.NET_SessionId не доступна
через переменную $cookie_* из-за точки в имени. (Где-то тут
следует передать большой и горячий привет компании из Редмонда.)

Наиболее простое решение - переименовать куку в какое-нибудь
приличное имя (без точек), см. тут:

http://stackoverflow.com/questions/1017144/rename-asp-net-sessionid

Кроме того, можно попытаться достать нужную куку руками из
заголовка запроса Cookie (и соответственно переменной
$http_cookie) и заголовка ответа Set-Cookie (и соответственно
переменной $upstream_http_set_cookie), как-то так (untested):

map $http_cookie $sessionid {
"~ASP\.NET_SessionId=(?<temp>[^;]+)" $temp;
}

map $upstream_http_set_cookie $set_sessionid {
"~ASP\.NET_SessionId=(?<temp>[^;]+)" $temp;
}

Но я такой вариант не рекомендовал бы. В частности потому, что
$upstream_http_set_cookie сейчас содержит только первую из кук,
которые пытались поставить.

--
Maxim Dounin
http://nginx.org/

_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

nginx в роли frontend к owncloud (1 reply)

$
0
0
_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Cвязка Nginx+Apache Php файлы скачиваются. (no replies)

$
0
0
Привет всем. Не нашел решения на форуме.
На VPS стоит связка Nginx+Apache. Html файлы отображаются корректно, а php файлы скачиваются с исходным кодом. Подразумеваю, что проблема в том, что nginx не отправляет обработку php файлов на apache, так как при использовании отдельно apache php файлы все таки выполняются.
Подскажите, пожалуйста, что нужно прописать в nginx.conf, чтобы динамика (php файлы) выполнялись через Apache

Файл nginx.conf
[SPOILER]
user apache;
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;

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;
include /etc/nginx/vhosts/*/*.conf;
server {
root /var/www/pivovarov93/data/www/website.com;
index index.php index.html index.htm;
server_name website.com;
#disable_symlinks if_not_owner;
listen 80;
include /etc/nginx/vhosts-includes/*.conf;
location ~ \.php$ {
}
location @fallback {
error_log /dev/null crit;
proxy_pass http://127.0.0.1:8080;
proxy_redirect http://127.0.0.1:8080 /;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Secret nhpuQyyD1YUs6pAC;
access_log off ;
}
}
}
[/SPOILER]

Помогите настроить nginx для Drupal (no replies)

$
0
0
Для главного домена все работает, для домена 3 уровня css не отдается. Хотя что для 2 что для 3 уровня css один.
server {

listen 80;

root /var/www/html;

server_name 123.com *.123.com;

ssi on;
ssi_silent_errors on;

location ~ ^/sites/.*/private/ {
return 403;
}


location ~ (^|/)\. {
return 403;
}


location ~ /sites/.*/files/styles/ {
try_files $uri @backend;
expires 30d;
log_not_found off;
}


location ~* \.(png|gif|jpg|jpeg|css|js|ico|swf|flw|cgi|bat|pl|dll|exe|asp)$ {
try_files $uri =404;
expires 30d;
log_not_found off;
}


location / {


error_page 418 = @backend;

if ($http_cookie ~* "SESS") {
return 418;
}

if ($request_method !~ ^(GET|HEAD)$ ) {
return 418;
}


default_type text/html;

add_header X-Nginx-Page-Cache HIT;


# set $memcached_key "PREFIX-cache_page-$scheme://$server_name$uri$is_args$args";
set $memcached_key "cache_page-$scheme://$server_name$uri$is_args$args";

http://nginx.org/ru/docs/http/ngx_http_memcached_module.html

memcached_pass unix:/var/run/memcached/memcached.socket1;

proxy_intercept_errors on;
error_page 404 502 = @backend;
}
location @rewrite {
# You have 2 options here
# For D7 and above:
# Clean URLs are handled in drupal_environment_initialize().
rewrite ^ /index.php;
# For Drupal 6 and bwlow:
# Some modules enforce no slash (/) at the end of the URL
# Else this rewrite block wouldn't be needed (GlobalRedirect)
#rewrite ^/(.*)$ /index.php?q=$1;
}

location @cache {

if ($http_cookie ~ "DRUPAL_UID" ) {
return 405;
}
if ($request_method !~ ^(GET|HEAD)$ ) {
return 405;
}
error_page 405 = @backend;
gzip on;
add_header Expires "Tue, 22 Sep 1974 08:00:00 GMT";
add_header Cache-Control "must-revalidate, post-check=0, pre-check=0";
try_files /cache/normal/$host/${uri}_.html /cache/perm/$host/${uri}_.css /cache/perm/$host/${uri}_.js /cache/$host/0$uri.html /cache/$host/0${uri}/index.html @backend;
}

location @backend {


add_header X-Nginx-Page-Cache MISS;

proxy_pass http://127.0.0.1:8080;
proxy_connect_timeout 120;
proxy_send_timeout 120;
proxy_read_timeout 180;

proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}

server {
server_name www.123.com;
return 301 $scheme://123.com$request_uri;
}

Сброс кэша с помощью ngx_cache_purge (8 replies)

$
0
0
Доброго дня!

В определенных ситуациях мне необходимо чистить закэшированные ответы nginx
Решил воспользоваться ngx_cache_purge

Кусок конфига:

location /api/delete_api_cache/ {
allow 127.0.0.1;
deny all;
proxy_cache_purge cachespace *;
return 204;
}

долблюсь curl'ом на этот урл, получаю 204
Кэш, однако, не сбрасывается, в access log'е вижу HIT

В чем может быть проблема?
_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

store_proxy не сохраняет файлы (3 replies)

$
0
0
Добрый день
Подскажите плз, что я делаю не так
имеется основной сервер хранения (storage) и фронтенд (img)
на фронтенде настроено

server {
listen *:80;
server_name img.site1.com img-a6.site1.com ;
root /home/site1/site1.com;

location ~* \.(jpg|jpeg|gif|png|ico|css|bmp|swf|js|html|txt)$ {
root /home/site1/site1.com/;
try_files $uri $uri/ @fallback;
error_log /home/site1/logs/site1.com-img-error.log warn ;
}
location @fallback
{
proxy_pass http://storage.site1.com;
proxy_store /home/site1/site1.com/$request_uri;
root /home/site1/site1.com;
proxy_store_access user:rw group:rw all:rw;
error_log /home/site1/logs/fallback-error.log warn ;
access_log /home/site1/logs/fallback-access.log ;
}

}
но при этом в /home/site1/site1.com пусто и он все равно за каждым
запросом обращается на storage
nginx version: nginx/1.6.2
_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Каким образом можно заставить nginx возвращать заголовки Last-Modified и If-Modified-Since? (no replies)

$
0
0
Здравствуйте, господа. Установлена связка nginx + php-fpm. При обращении к статичному контенту (html, jpg и т.д.) заголовок Last-Modified возвращается нормально, но не возвращается If-Modified-Since. Если же обращаюсь к динамичному контенту (php), то ни один из этих заголовков не возвращается. Подскажите, пожалуйста, каким образом можно заставить nginx возвращать заголовки Last-Modified и If-Modified-Since? В качестве средства проверки использую сайт http://last-modified.com/ru/if-modified-since.html.

Вот мой конфиг nginx:

user www-data www-data;
worker_processes 2;
worker_cpu_affinity 0101 1010;
worker_rlimit_nofile 8192;
worker_priority -5;
timer_resolution 100ms;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;

events {
worker_connections 2048;
multi_accept on;
accept_mutex on;
use epoll;
}

http {
include mime.types;
default_type application/octet-stream;
index index.html index.htm index.php;

upstream example.com {
server unix:/var/run/php5-fpm_example.com.sock max_fails=3 fail_timeout=3s;
}

server {
listen *:80;
server_name example.com;
root /home/example.com/www;
access_log /var/log/nginx/access.log;

location ~ ^.+\.php(?:/.*)?$ {
fastcgi_pass example.com;
include fastcgi_params;
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
if ($uri ~ ^(?<script_name>.+\.php)?(?<path_info>/.*)?$) {}

set $path_info_final $path_info;
if ($fastcgi_path_info != '') {
set $path_info_final $fastcgi_path_info;
}

fastcgi_param PATH_INFO $path_info_final;

set $script_name_final '/index.php';
if ($script_name != '') {
set $script_name_final $script_name;
}

fastcgi_param SCRIPT_FILENAME $document_root$script_name_final;

if (!-e $document_root$script_name_final) {
return 404;
}

fastcgi_param SCRIPT_NAME $script_name_final;

set $request_uri_final $request_uri;
if ($path_info_final != '') {
set $request_uri_final $path_info_final$is_args$args;
}

fastcgi_param REQUEST_URI $request_uri_final;
fastcgi_index index.php;
fastcgi_next_upstream error timeout;
fastcgi_keep_conn on;
fastcgi_hide_header "X-Powered-By";
}

location / {
index index.html index.htm index.php;
try_files $uri $uri/ /index.html /index.htm /index.php;
}

location /blog {
try_files $uri $uri/ /blog/index.php?q=$uri&$args;
}

location ~ \.(htc|js|js2|js3|js4)$ {
expires 31536000s;
add_header Pragma "public";
add_header Cache-Control "max-age=31536000, public, must-revalidate, proxy-revalidate";
}

location ~ \.(html|htm|rtf|rtx|svg|svgz|txt|xsd|xsl|xml)$ {
expires 3600s;
add_header Pragma "public";
add_header Cache-Control "max-age=3600, public, must-revalidate, proxy-revalidate";
}

location ~ \.(asf|asx|wax|wmv|wmx|avi|bmp|class|divx|doc|docx|eot|exe|gif|gz|gzip|ico|jpg|jpeg|jpe|json|mdb|mid|midi|mov|qt|mp3|m4a|mp4|m4v|mpeg|mpg|mpe|mpp|otf|odb|odc|odf|odg|odp|ods|odt|ogg|pdf|pot|pps|ppt|pptx|ra|ram|svg|svgz|swf|tar|tif|tiff|ttf|ttc|wav|wma|wri|xla|xls|xlsx|xlt|xlw|zip)$ {
expires 31536000s;
add_header Pragma "public";
add_header Cache-Control "max-age=31536000, public, must-revalidate, proxy-revalidate";
}

}

}

Редирект луп при попытке выдрать имя скрипта из урл, Symfony2 (5 replies)

$
0
0
Здравствуйте!

Уже который день бьюсь над решением проблемы. Ставлю Symfony2 в сабдиректорию (это, думаю, не важно, т.к. при тестировании в корневой директории по домену результат тот же). Конфиг из сервер блока следующий:

listen 80;
autoindex on;
server_name example.com;
root /var/www/example.com;

rewrite ^/project/app_dev\.php/?(.*)$ /project/$1 permanent;

location /project {
alias /var/www/example.com/project/web;
index app_dev.php;
try_files $uri $uri/ @symfony;
}

location @symfony {
rewrite ^/project/(.*)$ /project/app_dev.php/$1 last;
}

location ~ ^/project/(.+)\.php(/|$) {
alias /var/www/example.com/project/web/;
include fastcgi_params;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_split_path_info ^/project/(.+\.php)(.*)$;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME /project/$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}

При доступе по URL типа:
http://example.com/project/app_dev.php/demo
или
http://example.com/project/demo

Все работает ок. Запросы передаются к симфони и нет никаких левых редиректов.

А вот при доступе к корню приложения, т.е. к:
http://example.com/project (со слешем или без - без разницы)

Выдается редирект луп. И не понимаю, откуда он. Интересно, что в этом случае, если я уберу $uri/ (со слешем) из try_files в блоке location /project {} - то все вдруг начинает работать. Однако я не понимаю, как эти вещи взаимосвязаны. Плюс к этому, мне нужно, чтобы $uri/ ПРИСУТСТВОВАЛ, т.к. я хочу иметь прямой доступ к реальным папкам на сервере, минуя симфони.

Пожалуйста, помогите разобраться.

Nginx отделяет содержимое от тегов (no replies)

$
0
0
Доброго времени суток всем!
Следующая проблема:
периодически, при обращении к страницам вида http://ip-сервера/phpmyadmin/ , т.е. когда обращение идет по ip сервера, а не по домену, генерируемая страница отдается в разделенном виде. Html теги без содержимого сначала, а их содержимое после всех html тегов в конце страницы.
Глюк всегда возникает при повторном обращении к url. Т.е. первый раз грузим страничку, все в прядке, заполняем форму и после нажатия на кнопку отправки получаем каку. Или просто перегружаем страничку с тем же результатом. Если ничего не делая подождать минут несколько и повторить попытку, то с высокой вероятностью получаем нормальную страницу.

Имею такое чудо на дедике, где nginx стоит front-end сервером перед apache и на vps, где только nginx с php-fpm.
Почему и предполагаю достаточно уверенно, что дело именно в nginx.

Причем глюк проявляется как на страницах создаваемых php, так и на страницах генерируемых модулями апаче типа mod_status.so

Буду благодарен за любые идеи, в какую сторону копать?

Просмотр url активных соединений (no replies)

$
0
0
Всем привет.
Подскажите, есть ли модуль или встроенный в nginx функционал который позволяет показывает URL-запросов которые обрабатываются в текущий момент? Например, то как выводит это апачевский /server-status
Или это только можно сделать включив глобальный аксес лог и потом парсить?

падает nginx mp4 стриминг модуль (1 reply)

$
0
0
Данные о системе:
Debian 6 squeezy
nginx 1.6.2


При включенном directio при запросе mp4 файла nginx отдает 404 через раз. Похоже что выбивает mp4 модуль

Ошибка в логах nginx:
[alert] 16557#0: *23 fcntl(O_DIRECT) "/srv/.../files2/mem/fizruk2_1.mp4" failed (22: Invalid argument) while sending mp4 to client, client ...

очень смахивает на проблему: http://marc.info/?l=nginx&m=131850782531063

При выключенном directio проблема исчезает.

Подскажите пожалуйста как решить проблему и оставить directio.

Конф сервера выглядит так:

location ~ ^/files2/.*?\.mp4$ {
mp4;
mp4_buffer_size 1m;
mp4_max_buffer_size 8m;
limit_rate 1m;
limit_rate_after 10m;
limit_conn two_two 4;
aio on;
internal;
directio 512;
output_buffers 32 512k;
root /files/;
}

Спасибо

Apache+Nginx+NAT (1 reply)

$
0
0
Всем привет.
Имеется странная ситуация: есть связка apache+nginx, оба на разных физических серверах. Сервер с nginx'ом натится на внешний адрес (средствами check point). Проблема в том, что в логах апача все запросы пишутся от внешнего адреса, хотя модуль rpaf установлен и загружен.
Кусок конфига nginx'а:
server {
listen 80;
server_name server.ru www.server.ru;

#charset koi8-r;

access_log logs/server.ru.access.log main;

proxy_intercept_errors on;

if ($request_method !~ ^(GET|HEAD|POST)$ ) {
return 444;
}

location / {
root /opt/nginx/html/server;
index index.php ndex.html index.htm;

proxy_pass http://192.168.0.101:8080;

proxy_redirect off;

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 600;
proxy_send_timeout 600;
proxy_read_timeout 600;

proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;

}
}
Интересно то, что, когда оба сервера находились на одной машине (и апач слушал на локалхосте), все работало.
В чем может быть проблема?

debian + geoip_module (2 replies)

$
0
0
deb http://nginx.org/packages/debian/ wheezy nginx
deb-src http://nginx.org/packages/debian/ wheezy nginx
Репа подключена.
Какой надо поставить пакет, где geoip будет уже собран? Не хотелось бы
руками собирать.

_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Статика с поддомена и с другого сервера (no replies)

$
0
0
Доброго времени суток!
Подскажте ,пожалуйста ,как раздать статику с поддомена и иного сервера
Текущиий конфиг

server {
listen 80;
server_name static.server.ru;
location ~* .(jpg|jpeg|gif|png)$ {
root /var/www/images;
error_page 404 = @fallback;
expires 24h;
autoindex off;
access_log off;
}
}

Логирование 302 ридеректов - куда? (2 replies)

$
0
0
log_format main '$http_x_forwarded_for - $remote_user [$time_local]
"$host" "$request" ' '$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" $request_time';
----------
есть скрипт, надо смотреть куда он шлет 302 ридерект. Как это сделать. Трафика много полное сохранение боди нет смысла делать все наверное засориться через минут 5. А надо логировать на долгой дистанции. 302 на другой сервер.
Как сделать подскажите пожалуйста

Забивается папка проксированных тел (1 reply)

$
0
0
Здравствуйте.

В последнее время стали находить много серверов, где довольно много таких
вот файлов остается:

nginx.client_body_temp/ID (deleted)

Что с этим можно сделать? Сейчас 1.6.0, на 1.2.4 таких проблем не замечали.

--
Best regards,
Anton Kiryushkin
_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Возможно ли динамически менять proxy_connect_timeout (1 reply)

$
0
0
Возможно ли динамически менять proxy_connect_timeout через переменную?
Если делаю так (просто для примера):
set $proxy_timeout 90;
location / {
....
proxy_connect_timeout $proxy_timeout;

то получаю ошибку "nginx: [emerg] "proxy_connect_timeout" directive invalid value"
Можно, конечно, заморочаться с разными location, но тогда конфиг сильно вырастет.

Поведение cache manager при уменьшении допустимого размера кеша в конфиге (1 reply)

$
0
0
Добрый день.

Было в кеше занято 380 Гб, при изменении в конфиге лимита на 360Гб и
релоаде конфига
cache manager начал утилизировать диски на 100% и работа nginx по факту
приостановилась, пока кэш не был вычещен до размера лимита.
Т.к. все запросы, которые должно проходить через proxy_pass с кешированием
выглядели вот так:

88.204.153.106 - - [19/Nov/2014:16:37:36 +0300] "-" 400 0 "-" "-" server -
- -
193.200.33.106 - - [19/Nov/2014:16:37:36 +0300] "-" 400 0 "-" "-" server -
- -
95.134.27.18 - - [19/Nov/2014:16:37:36 +0300] "-" 400 0 "-" "-" server - - -
188.254.126.237 - - [19/Nov/2014:16:37:36 +0300] "-" 400 0 "-" "-" server -
- -
93.85.196.79 - - [19/Nov/2014:16:37:36 +0300] "-" 400 0 "-" "-" server - - -
78.25.120.5 - - [19/Nov/2014:16:37:36 +0300] "-" 400 0 "-" "-" server - - -
95.154.65.77 - - [19/Nov/2014:16:37:36 +0300] "-" 400 0 "-" "-" server - - -
188.255.27.100 - - [19/Nov/2014:16:37:36 +0300] "-" 400 0 "-" "-" server -
- -

то подобное поведение довольно некорректно. Нет ли возможности сказать
cache manager'у что не надо так насиловась диск, ведь загрузчик умеет
грузить по 100 файлов.

--
Рустам
_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Nginx и новые домены в зоне agensy, подскажите (1 reply)

$
0
0
Здравствуйте, имеется домен domain.agensy, прописываю в nginx секцию


server {
listen 80;
server_name domain.agency;
rewrite ^ http://www.newsite.ru$request_uri? permanent;
}

Но данная конструкция для такого домена не срабатывает, если прописать обычный домен в зоне ru например, то редирект проходит нормально. Что-то значит с доменом domain.agensy

В логи nginx падает такая строка:

2014/11/20 09:52:08 [error] 16663#0: *6 "/usr/share/nginx/html/index.html" is not found (2: No such file or directory), client: 2xx.4x.1xx.1xx, server: localhost, request: "GET / HTTP/1.1", host: "domain.agensy"

Заранее благодарен!

Помогите пожалуйста с rewrite (no replies)

$
0
0
Доброго дня.
Гугление не помогает, т.к. не могу понять как сформулировать задачу.

Вот такой вот тестовый конфиг

location / {
rewrite ^ /exec&mid=1 last;
}

location /exec {
proxy_pass http://127.0.0.1:8080/exec;
}

В случае обращения по http://ip:port/ пользователю выдается страница с данными.
Но если обращаться по http://ip:port/<еще что-то>, то страница выдается, но всё, что в ней используется, берется по адресу, который был добавлен после /

Например
11.11.1.2 - - [20/Nov/2014:10:55:48 +0300] "GET /asd1/asd2/style.css HTTP/1.1" 200 3044 "http://11.11.11.1:9088/asd1/asd2/asd3" "Chrome/38.0.2125.111" "-"

Помогите написать правило, чтобы nginx обрезал и /asd1/asd2/asd3, и выдавал страницу нормально.
Viewing all 3102 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>