Перемещение Платформы Зенда 2 от апача к nginx

Я хотел бы переместить сайт, который использует Платформу Зенда 2 от Apache до Nginx. Проблема состоит в том, что сайт имеет 6 модулей, и апач обрабатывает его псевдонимами, определенными в httpd-vhosts.conf,

#httpd-vhosts.conf
<VirtualHost _default_:443>
ServerName localhost:443

Alias /develop/cpanel "C:/webapps/develop/mil_catele_cp/public"
Alias /develop/docs/tech "C:/webapps/develop/mil_catele_tech_docs/public"
Alias /develop/docs "C:/webapps/develop/mil_catele_docs/public"
Alias /develop/auth "C:/webapps/develop/mil_catele_auth/public"
Alias /develop "C:/webapps/develop/mil_web_dicom_viewer/public" 

DocumentRoot "C:/webapps/mil_catele_homepage"
</VirtualHost>

в httpd.conf DocumentRoot установлен на C:/webapps. Сайты являются avialeble в, например, localhost/develop/cpanel. Платформа обрабатывает дальнейшую маршрутизацию.

В Nginx я смог сделать только один сайт доступным specifing root C:/webapps/develop/mil_catele_tech_docs/public; в блоке сервера. Это работает только потому, что модуль документов не зависит от автора как другие, и сайт был в localhost/.

В следующей попытке:

root   C:/webapps;
location  /develop/auth {
    root   C:/webapps/develop/mil_catele_auth/public;
    try_files $uri $uri/ /develop/mil_catele_auth/public/index.php$is_args$args;
}

Теперь, поскольку я вхожу localhost/develop/cpanel это добирается для исправления index.php, но не может найти ресурсы (CSS, js файлы). Я понятия не имею, почему ссылочные пути в browswer's ПОЛУЧАЮТ requsts, измененный на https://localhost/css/bootstrap.css форма https://localhost/develop/auth/css/bootstrap.css поскольку это было на апаче. Эта корневая директива кажется не работой.

Nginx обрабатывает php при помощи fastCGI

location ~ \.(php|phtml)?$ {        
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    fastcgi_param   APPLICATION_ENV  production;
    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    include        fastcgi_params;
}

Я погуглил целый день, и ничто не нашел полезным. Кто-то может помочь мне заставить эту конфигурацию работать как над Apache?

1
задан 20 August 2014 в 11:03
1 ответ

Не следует использовать директиву root внутри блоков location.

Попробуйте:

location /develop/auth {
    alias C:/webapps/develop/mil_catele_auth/public;
    try_files $uri $uri/ /index.php$is_args$args;
}

В данной конфигурации URL-адреса работают следующим образом:

http://example.com/develop/auth/image.png -> C:/webapps/develop/mil_catele_auth/public/image. png

Если вместо псевдонима использовать root, то вместо него получится:

C:/webapps/develop/mil_catele_auth/public/develop/auth/image.png.

А потом, для какого-то несуществующего файла/директории:

http://example.com/develop/auth/not-existing ->. C:/webapps/develop/mil_catele_auth/public/index.php будет запущен.

Надеюсь, это будет работать так, как вы хотите.

.
1
ответ дан 4 December 2019 в 00:20

Теги

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