Mover o Zend Framework 2 do apache para o nginx

1

Eu gostaria de migrar o site que usa o Zend Framework 2 do Apache para o Nginx. O problema é que o site tem 6 módulos, e o apache lida com aliases definidos no 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>

no httpd.conf O DocumentRoot está configurado para C: / webapps. Sites estão disponíveis, por exemplo, em localhost/develop/cpanel . O Framework lida com roteamento adicional.

No Nginx, consegui disponibilizar apenas um site especificando root C:/webapps/develop/mil_catele_tech_docs/public; no bloco do servidor. Funciona apenas porque o módulo docs não depende de autenticação como os outros, e o site estava em localhost/ .

Na próxima tentativa:

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;
}

Agora, quando eu digito localhost/develop/cpanel , ele corrige index.php, mas não consegue encontrar nenhum recurso (arquivos css, js). Não tenho a menor idéia de por que os caminhos de referência nos requisitos de GET do browswerer foram alterados para https://localhost/css/bootstrap.css form https://localhost/develop/auth/css/bootstrap.css , como no apache. Esta diretiva raiz parece não funcionar.

O Nginx manipula o php usando o 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;
}

Eu pesquisei o dia todo e não achei nada útil. Alguém pode me ajudar a fazer essa configuração funcionar como no Apache?

    
por Aleksander 20.08.2014 / 10:03

1 resposta

1

Você não deve usar a diretiva root dentro de location blocks.

Tente isto:

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

Com essa configuração, os URLs funcionam assim:

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

Se você usar root em vez de alias , receberá:

C:/webapps/develop/mil_catele_auth/public/develop/auth/image.png em vez disso.

E, em seguida, para algum arquivo / diretório não existente:

http://example.com/develop/auth/not-existing - > C:/webapps/develop/mil_catele_auth/public/index.php seria executado.

Espero que isso funcione do jeito que você quer que funcione.

    
por 20.08.2014 / 11:57