Pull to refresh

Comments 31

Если решение не ново, прошу сильно ногами не бить, писал из добрых побуждений, думаю кому-то пригодиться.
Вы просто процитировали обыденную вещь.
location / {
root /usr/local/www/wowmate.ru/;
}

location ~ \.php$ {
proxy_pass httр://127.0.0.1/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr
}

расширения php добавить по своему вкусу. это намного проще, чем писать отрицание )

Бессмысленно было прятать урл в посте — он остался в моем комменте :)
У меня так не заработало: [emerg]: «proxy_pass» may not have URI part in location given by regular expression
Действительно. Я не прав. У меня просто fastcgi_pass работает в такой конфигурации — не думал, что proxy_pass откажется.
А если заменить строчку

proxy_pass httр://127.0.0.1/;

на строчку

proxy_pass httр://127.0.0.1;

то все пашет :)
так заработало все, кроме корня сайта: 403 Forbidden
Ну добавь в location / строку:

index index.php index.html index.htm;

Это уже как бы стандартно.
Да, спасибо. Все заработало. Ну мой пост как еще один вариант пусть будет.
А можно ли как то секцию с proxy_pass 127.0.0.1 вынести отдельно, а в конфигах виртуальных хостов использовать как ссылку на вынесенную секцию, что бы не повторять много раз одно и то же?
Вынести в отдельный файл и подключать include-ом, например.

Основной конфиг:

location / {
root /usr/local/www/one.example.com/;
index index.php;
}

include php.conf;

Файл php.conf (лежит в корне папки с конфигами nginx):

location ~ \.php$ {
proxy_pass httр://127.0.0.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr
}
Хотя версия конфига тов. lomik`а весьма удачна.
Вполне стандартна — никаких оригинальных идей или чего-то нового там нет. Мои рабочие конфиги обычно намного длиннее и интереснее. :)
У Вас получилось короче, чем исходная версия и понятно.

Я напр., с nginx`ом ни разу не сталкивался, но всё понял, что написано.

Баланс что ли был соблюден.
вобще глупо это — только файлы с расширением *.php
*.phps тоже должны отдаваться не нгинксом

да и впринципе допустим у меня урлы на сайте большинство в виде /about/me — не отдавать же их апачем
я помнится в ноябре тупил и пытался найти идеальное решение (как и автор топика) для нгинкса, дабы описать все, что не кончается на «php»
решение было совсем не тривиальным — www.staypositive.ru/blog/2009/11/19/regular-fuckin

но к слову — глупости все это (как оказалоь потом)
У автора phps тоже уходит на апач. Только php у меня — это просто иллюстрация как можно сделать без отрицающих регекспов. Можете заменить \.php на \.(php|phps) — это на любителя.

А что не так с /about/me? Он не улетит на апач.
/about/me как раз таки в случае конфига автора топика улетит на апач
а вот /about/me/ — не улетит
Вот-вот, не улетит! А вот интересно было бы сделать такую же штуку, только с перламутровыми пуподдержкой пресловутого ЧПУ, например.
Перепечатывать и форматировать лень. Конфиг из виртуальной машины для тестов:

clip2net.com/clip/m12120/1265929129-clip-6kb.png

и php.conf (аналог для fastcgi только)
clip2net.com/clip/m12120/1265929242-clip-9kb.png

If в основном конфиге именно для ЧПУ конкретного проекта.

Пример с другого проекта:
clip2net.com/clip/m12120/1265929546-clip-5kb.png
А подскажите что надо сделать чтобы именно записи вида "/about/me" улетали на апач? У меня в корне нет индексных файлов и всё разгребает htaccess, решая какому скрипту отдать запрос.
А вот как раз в моем случае улетает на апач и "/about/me" и "/about/me/" т.к. проверяю если вообще нет точки или заканчивается на "/"
Наверное я скажу глупость, но зачем вам apache, когда есть php-fpm?

На всех своих проектах используется связка nginx + php-fpm, при этом никаких проксирующих серверов больше не используется. :)
OMG. жду завтра статьи про то как: настраиваем вэб сервер на убунте, так чтобы все запросы по части php обрабатывал apache!!!!111
нет, вы это серьезно?
мне кажется более удачным решением будет всю статику отдавать вообще отдельным хостом (типа static.example.com) или по отдельному урлу (типа example.com/media/)
в первом случае нужно завести новый virtual host, во втором конфиг будет выглядеть примерно так

location / {
    proxy_pass 127.0.0.1:8080/;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header Host $http_host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

location /media/ {
    root /usr/local/www/one.example.com/;
    access_log off;
    expires max;
    add_header Last-Modified: $date_gmt;
}
location ~ /\.htp { deny all; }
location ~ /\.hta { deny all; }
location ~ /\.svn { deny all; }
Sign up to leave a comment.

Articles