Я пытаюсь разработать следующую конфигурацию; предваряя это, у меня есть работающая реализация Nginx/PHP FastCGI, работающая на сервере с одним IP-адресом, без полного доменного имени и/или DNS, обслуживающего один веб-сайт/приложение на основе PHP. Теперь у меня тот же сценарий с другим сервером, разница в том, что требуется обслуживать несколько клиентских сайтов (один из которых является сайтом Wordpress). Я также НЕ являюсь экспертом по Nginx на сегодняшний день.
Для обзора: корень документа для блока сервера — '/usr/share/nginx/html'
, значение по умолчанию для Nginx. Подается нормально, без проблем с http://xxx.xxx.xxx.76. Теперь требуется, чтобы клиенты вводили в своем браузере адрес http://xxx.xxx.xxx.76/pmhs в качестве примера. Затем будет обслуживаться их сайт на основе php и так далее для http://xxx.xxx.xxx.76/client для настройки и обслуживания любых других сайтов.
Корневой каталог документов для этих клиентов находится в стандартной папке CentOS 7 '/srv'
, где все клиенты настроены так, чтобы контент сайта был доступен в их папке '/srv/www/{client}.production/public_html'
. Большинство примеров конфигурации, которые мне удалось откопать, на самом деле не относятся к этому типу конфигурации, большинство, если не все, имеют какой-то сервер и/или DNS, что делает маршрутизацию немного более понятной (на мой взгляд, в этом стык).
server {
## -------------------------------------------------
# define virtual server configuration
## -------------------------------------------------
listen 80;
server_name localhost;
root /usr/share/nginx/html;
index index.html index.htm index.php;
access_log /var/log/nginx/default.access.log main;
error_log /var/log/nginx/default.error.log debug;
rewrite_log on;
## -------------------------------------------------
# default site / ip address
# @ serve nginx welcome page
## -------------------------------------------------
location = / {
try_files $uri $uri/;
}
## -------------------------------------------------
# favicon.ico location filter
## -------------------------------------------------
location = /favicon.ico { access_log off; log_not_found off; }
## -------------------------------------------------
# do not serve hidden files
## -------------------------------------------------
location ~ /\. { access_log off; log_not_found off; deny all; }
## -------------------------------------------------
# client website location block
## -------------------------------------------------
location ~ ^\/(?<client>[\w-_]+) {
# reset the document root for the client
#root /srv/www/$client.production/public_html;
alias /srv/www/$client.production/public_html;
# set the port used for the clients fastcgi pool
if ($client = "belmond") { set $port 9000; }
if ($client = "freeboard") { set $port 9001; }
if ($client = "pmhs") { set $port 9002; }
if ($client = "vesta") { set $port 9003; }
#return 200 $document_root$uri;
# nginx pass to php fastcgi - serve client web
#location ~ [^/]\.php(/|$) {
#}
}
location @fastcgi_proxy {
fastcgi_split_path_info ^(.+?\.php)(.*)$;
set $orig_path $fastcgi_path_info;
try_files $fastcgi_script_name =404;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include /etc/nginx/fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $orig_path;
fastcgi_param PATH_TRANSLATED $document_root$orig_path;
set $temp "/var/lib/php/fpm/session";
fastcgi_param TEMP $temp;
fastcgi_read_timeout 500;
fastcgi_ignore_client_abort on;
fastcgi_connect_timeout 60;
fastcgi_send_timeout 180;
fastcgi_buffer_size 8k;
fastcgi_buffers 64 8k;
fastcgi_temp_file_write_size 256k;
}
## -------------------------------------------------
# redirect server error pages
# @ serve nginx static page(s) /50x.html
## -------------------------------------------------
error_page 500 502 503 504 /50x.html;
location = /50x.html {
try_files $uri $uri/;
}
}
Я могу зафиксировать местоположение клиента с помощью регулярного выражения, но затем оно начинает становиться немного «размытым» для меня относительно того, что делать дальше, исходя из того, что я вижу. Когда я перехожу к базовому IP-адресу, это то, что ожидается, возвращается страница приветствия Nginx.
Теперь, когда я передаю тот же адди с именем клиента (с возвратом 200 $document_root$uri; без комментариев), псевдоним document_url был правильно указан, но теперь я немного растерялся. В конечном счете, я хотел бы, чтобы все клиентские сайты были настроены на прокси-сервер php-fpm fastcgi для обслуживания (именно поэтому код $port определен, но еще не используется).
Просто ищу любое направление и т. Д. О том, как это очистить и заставить его работать правильно, в то же время продолжая изучать конфигурацию Nginx в процессе ...
Какова будет цель для основного IP-адреса (в настоящее время работает в соответствии с этой конфигурацией):
URL = xxx.xxx.xxx.76 or xxx.xxx.xxx.76/
[serve] /usr/share/nginx/html/(*.html) content
[from] root /usr/share/nginx/html;
(Необходимо определить, как обслуживать клиентские сайты из каталога их серверов)
URL = xxx.xxx.xxx.76/pmhs or xxx.xxx.xxx.76/pmhs/
[serve] /srv/www/pmhs.production/public_html/(*.php)
[from] root srv/www/pmhs.production/public_html;
URL = xxx.xxx.xxx.76/acme or xxx.xxx.xxx.76/acme/
[serve] /srv/www/acme.production/public_html/(*.php)
[from ] root srv/www/acme.production/public_html;
Есть ли в этом смысл? Я думаю, что я довольно близко, но я просто не знаю, так это или нет.
path
), и все, что вам осталось, это получить синтаксис конфигурации nginx, чтобы передать переменную порта смотря что в адресной строке. Выглядит хорошо для меня. - person Mjh   schedule 09.05.2016directory index of "/srv/www/pmhs.production/public_html" is forbidden
вы проверили права доступа к каталогу? похоже, что Nginx не может получить доступ к этому каталогу. - person MMT   schedule 10.05.2016