У меня есть 2 cakephp приложения: каждый использует пирог 2, и другой использует пирог 3.
Это - моя конфигурация nginx
server {
listen 80;
client_max_body_size 2M;
server_name cake.dev;
root /var/virtual/cake2app/webroot;
location /cake3-app/ {
alias /var/virtual/cake3app/webroot;
}
access_log /var/log/nginx/cakephpsite.com-access.log;
include common.conf;
include cakephp.conf;
}
Это - common.conf
index index.html;
location ~ /\.ht {
deny all;
}
sendfile off;
Это - cakephp.conf
include php.conf;
location / {
try_files $uri $uri/ /index.php?$uri&$args;
expires max;
access_log off;
}
Это - php.conf
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
include fastcgi_params;
}
index index.php;
cake.dev
правильно указывает на мой пирог 2 приложения.
Я не могу добраться cake.dev/cake3-app для указания на пирог на 3 приложения.
В моем пироге 3 приложения у меня есть a users/login
действие, которое работает отлично, если я получаю доступ к пирогу 3 от отдельного домена.
Но это не то, что я хочу.
Что я сделал неправильно с точки зрения конфигурации nginx?
Моя ошибка последовательно является 403, если я получаю доступ cake.dev/cake3-app/
и я получаю сообщение об ошибке пирога, говоря мне нет такого контроллера, когда я получаю доступ cake.dev/cake3-app
.
Советуйте.
Править:
Мне удается использовать этот прием. В моем cakedev.conf
Я записал
server {
listen 80;
client_max_body_size 2M;
server_name cake.dev;
root /var/virtual/cake2/webroot;
access_log /var/log/nginx/cakephpsite.com-access.log;
include common.conf;
include cakephp.conf;
location /cake3-app/ {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header HOST $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://127.0.0.1:83;
proxy_redirect off;
rewrite ^/cake3-app/(.*)$ /$1 break;
}
}
Затем у меня есть a cake3.conf
server {
listen 83;
client_max_body_size 2M;
server_name 127.0.0.1;
root /var/virtual/cake3/webroot;
include common.conf;
include cakephp.conf;
}
Перенаправление URL работает на веб-страницы, но НЕ различные активы cake3 приложения.
Cake3App автоматические точки к http://cake.dev/css/base.css
когда это должно указывать http://cake.dev/cake3/css/base.css
Возможно, я должен записать что-то другое для common.conf
и cakephp.conf
для cake3.conf
?
Есть 3 ступени. Первые 2 связаны с nginx. Последний - связан с cakephp.
Шаг 1: Нужно сообщить config, ответственному за имя_сервера http://cake.dev, чтобы перенаправить http://cake.dev/cake3 urls на нужный config
Предположим, что cakedev.conf
- конфигурация, ответственная за http://cake.dev
server {
listen 80;
client_max_body_size 2M;
server_name cake.dev;
root /var/virtual/cake2/webroot;
access_log /var/log/nginx/cakephpsite.com-access.log;
include common.conf;
include cakephp.conf;
location /cake3-app/ {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header HOST $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://127.0.0.1:83;
proxy_redirect off;
rewrite ^/cake3-app/(.*)$ /$1 break;
}
}
Заметили, как я пишу proxy_pass
? Он идет на 127.0.0.1:83
. Это очень важно, хотя я подозреваю, что вы можете изменить номер порта.
Шаг 2: Запишите конфигурацию, отвечающую за cake3
Предположим, что файл cake3.conf
server {
listen 83;
client_max_body_size 2M;
server_name 127.0.0.1;
root /var/virtual/cake3/webroot;
include common.conf;
include cakephp.conf;
}
Обратите внимание, как имя_сервера и прослушивание совпадают с proxy_pass из предыдущего конфигурационного файла? Это очень важно.
Шаг 3: Измените App.base
внутри cake3
Зайдите внутрь своего приложения cake3 и ищите config/app. php
Измените это значение
'App' => [
'namespace' => 'App',
'encoding' => 'UTF-8',
'base' => false,
на
'App' => [
'namespace' => 'App',
'encoding' => 'UTF-8',
'base' => '/cake3-app', // please make sure you start with a / and NEVER end with a /