Помогите прописать правило в Nginx

SN
На сайте с 04.07.2013
Offline
84
1497

Друзья, прошу помочь прописать простое правило.

У меня есть сайт который находится на выделенном ip (допустим 123.456.789.10).

Мне нужно чтобы заходя в браузере по адресу 123.456.789.10 открывалась страница которая находится в папке /usr/share/nginx/html.

а заходя по адресу 123.456.789.10/folder/ запускался php скрипт который находится в папке /home/www/folder.

Я составил следующий код, первая часть работает, вторая нет - выдает ошибку 404. Прошу подсказать что не так. Спасибо.

server

{

listen 80;

server_name localhost;

location /

{

root /usr/share/nginx/html;

index index.html;

}

}

server

{

listen 80;

server_name localhost/folder;

location /

{

root /home/www/folder;

index index.php;

}

location ~ \.php$

{

fastcgi_pass 127.0.0.1:9000;

fastcgi_index index.php;

fastcgi_param SCRIPT_FILENAME /home/www/folder$fastcgi_script_name;

include /etc/nginx/fastcgi_params;

}

}

P
На сайте с 16.03.2009
Offline
144
#1

server{
listen 80;
server_name localhost;
index index.html;
root /usr/share/nginx/html;

location /folder/{
alias /home/www/folder/;
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /home/www/folder$fastcgi_script_name;
include /etc/nginx/fastcgi_params;
}
}
}
SN
На сайте с 04.07.2013
Offline
84
#2

Спасибо за ответ!

Сейчас уже лучше, вот только была ошибка 404 а теперь стала 403 - доступ запрещен. Права доступа на папки /home/www/folder/ -755. В папке folder лежит файл index.php который поидее должен запуститься..

LM
На сайте с 18.10.2009
Offline
117
#3

Вообще, полезно посмотреть лог ошибок сайта. :)

А предположить можно нехватку прав из-за open_basedir, если такое настроено...

SN
На сайте с 04.07.2013
Offline
84
#4

Друзья! Прошло уже 3 недели а вопрос так и остался для меня нерешенным. Выдает ошибку 403 хоть ты тресни.

Мне нужно чтобы по адресу site.ru/folder/ запускался файл index.php расположенный по адресу /home/www/folder/

А мне браузер выдает: 403 Forbidden nginx

Посмотрите пожалуйста профессиональным взглядом что не так.

Запись из error.log

2015/06/17 15:58:12 [error] 445#0: *1 directory index of "/home/www/folder" is forbidden, client: 109.188.124.74, server: site.ru, request: "GET /folder/ HTTP/1.1", host: "site.ru"

Запись из access.log

109.188.124.74 - - [17/Jun/2015:15:58:12 +0300] "GET /folder/ HTTP/1.1" 403 134 "-" "Mozilla/5.0 (Windows NT 6.3; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0" "-"

Права на все папки в адресе /home/www/folder - 755

Файл nginx.conf (в нем же конфигурация моих хостов)



user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log error;
pid /var/run/nginx.pid;

events {
worker_connections 1024;
}

http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
charset UTF-8;
server_tokens off;
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;
open_file_cache max=65000 inactive=60s;
open_file_cache_valid 30s;
open_file_cache_min_uses 2;
open_file_cache_errors on;
gzip on;
gzip_comp_level 9;
gzip_disable "msie6";
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
sendfile on;
keepalive_timeout 65;

server {
listen 80;
server_name site.ru www.site.ru;

location / {
root /home/vlad/site.ru/www;
index index.php index.html index.htm;
}

location /folder/ {
alias /home/www/folder;
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /home/www/folder$fastcgi_script_name;
include /etc/nginx/fastcgi_params;
}
}
}
}

Спасибо !

S
На сайте с 02.05.2014
Offline
61
#5

		location /folder/ {

alias /home/www/folder/;
index index.php;
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
........
}
}
SN
На сайте с 04.07.2013
Offline
84
#6
Sujcnm:
		location /folder/ {

alias /home/www/folder/;
index index.php;
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
........
}
}

Спасибо, но я уже так пытался. Не помогло. Результат тот же - 403

S
На сайте с 02.05.2014
Offline
61
#7
SeoNk:
Спасибо, но я уже так пытался. Не помогло. Результат тот же - 403

А вы сейчас попробуйте, а потом обязательно перезапустите nginx.

Вот специально попробовал на тестовой машине, у меня все ок.

SN
На сайте с 04.07.2013
Offline
84
#8
Sujcnm:
А вы сейчас попробуйте, а потом обязательно перезапустите nginx.
Вот специально попробовал на тестовой машине, у меня все ок.

Подскажите пожалуйста:

в alias после слова folder должен быть "слеш" ?

Если без слеша - ответ 403 Forbidden nginx - я так понимаю это неправильно.

Если я его добавляю, мне просто пишет "File not found" маленькими буквами в углу, я так понимаю это отвечает FastCGI.

В папке /home/www/folder/ лежит файл index.php

Если я в папку кидаю файл index.html и прописываю index index.html index.php, то открывается страница html.

Все права на папки и index.php - 777

error.log

2015/06/18 17:25:11 [error] 1237#0: *3 FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream, client: 109.188.127.20, server: site.ru, request: "GET /folder/ HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "site.ru"

access.log

109.188.127.20 - - [18/Jun/2015:17:25:11 +0300] "GET /phpmyadmin/ HTTP/1.1" 404 47 "-" "Mozilla/5.0 (Windows NT 6.3; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0" "-"

Спасибо !

S
На сайте с 02.05.2014
Offline
61
#9
SeoNk:
Если я его добавляю, мне просто пишет "File not found", я так понимаю это отвечает FastCGI.

Оставьте слеш. У вас еще 1 косяк:

fastcgi_param SCRIPT_FILENAME /home/www/folder$fastcgi_script_name;

Должно так (без folder):

fastcgi_param SCRIPT_FILENAME /home/www$fastcgi_script_name;

Права 777 это плохая идея, 644 файлы, папки 755 (а то и меньше) вполне достаточно.

А вообще не плохо бы проверить кто владелец файлов, и от имени какого юзера работает php-fpm и от этого менять права или править конфиги.

SN
На сайте с 04.07.2013
Offline
84
#10
Sujcnm:
Оставьте слеш. У вас еще 1 косяк:

Должно так (без folder):
fastcgi_param SCRIPT_FILENAME /home/www$fastcgi_script_name;


Права 777 это плохая идея, 644 файлы, папки 755 (а то и меньше) вполне достаточно.
А вообще не плохо бы проверить кто владелец файлов, и от имени какого юзера работает php-fpm и от этого менять права или править конфиги.

ДААА !!! Спасибо, все заработало !!

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий