Как использовать точку nginx для различных приложений при использовании того же домена

У меня есть 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?

0
задан 11 January 2015 в 10:55
1 ответ

Есть 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 /
0
ответ дан 5 December 2019 в 13:00

Теги

Похожие вопросы