I have 2 cakephp applications: one is using cake 2 and the other is using cake 3.
This is my nginx config
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;
}
This is common.conf
index index.html;
location ~ /\.ht {
deny all;
}
sendfile off;
This is cakephp.conf
include php.conf;
location / {
try_files $uri $uri/ /index.php?$uri&$args;
expires max;
access_log off;
}
This is php.conf
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
include fastcgi_params;
}
index index.php;
the cake.dev
is correctly pointing to my cake 2 app.
I cannot get cake.dev/cake3-app to point to the cake 3 app.
Inside my cake 3 app, I have a users/login
action which works perfectly if I access the cake 3 from a separate domain.
But that is not what I want.
What have I done wrong in terms of the nginx config?
My error is consistently a 403 if I access cake.dev/cake3-app/
and I get a cake error message telling me there is no such controller when I access cake.dev/cake3-app
.
Please advise.
EDIT:
I manage to use this trick. Inside my cakedev.conf
I wrote
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;
}
}
Then I have 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;
}
The url redirect works for the web pages but NOT the various assets of the cake3 app.
Cake3App auto points to http://cake.dev/css/base.css
when it should be pointing to http://cake.dev/cake3/css/base.css
Perhaps I need to write something different for the common.conf
and the cakephp.conf
for the cake3.conf
?
There are 3 steps. First 2 are nginx-related. Last one is cakephp-related.
Step 1: Need to inform the config responsible for server_name http://cake.dev to redirect http://cake.dev/cake3 urls to the right config
Assuming
cakedev.conf
is the config responsible forhttp://cake.dev
Notice how I write the
proxy_pass
? It goes to127.0.0.1:83
. This is crucial though I suspect you can change the port number.Step 2: Write up the config responsible for cake3
Assuming the file is cake3.conf
Notice how the server_name and the listen matches with the proxy_pass from the earlier config? This is crucial.
Step 3: Change the
App.base
inside cake3Go inside your cake 3 app and look for config/app.php
Change this value
to