nginx의 역방향 프록시 별칭 뒤의 Nette
<p>Apache2/Debian 11 서버에서 Nette 애플리케이션을 실행하고 있는데 잘 작동합니다. 그러나 nginx 프록시 뒤에 숨기려면 별칭을 사용해야 합니다. </p>
<p>http://127.0.0.1:89/에서 실행되는 완벽한 Apache2 환경이 있고 https://example.com/applications/에서 역방향 프록시로 설정된 nginx를 통해 이에 액세스하려고 한다고 가정합니다.< ;/p>
<p>nginx 설정은 다음과 같습니다.</p>
<pre class="brush:php;toolbar:false;">위치 /app/ {
프록시패스 http://127.0.0.1:89;
Proxy_set_header 호스트 $host;
Proxy_set_header X-전달-호스트 $host;
Proxy_set_header X-Forwarded-Proto "https";
Proxy_set_header X-Forwarded-Port "443";
Proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}</pre>
<p>프록시가 시도하기 전에 Apache2 구성은 변경되지 않은 채로 유지됩니다. </p>
<pre class="brush:php;toolbar:false;"><VirtualHost *:89>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/app/www/
<디렉터리 /var/www/app/www/>
옵션 색인 FollowSymLinks
모두 무시 허용
모두 부여 필요
</디렉토리>
</VirtualHost></pre>
<p>문제는 Nette 애플리케이션이 여전히 "/app" URI 부분이 없는 경로에서 실행되고 있다고 생각하므로 리디렉션 및 링크 호출($basePath 템플릿 변수 포함)을 통해 생성된 모든 링크가 유효하지 않다는 것입니다. <
<p>또한 Nette 구성에 프록시 정보를 추가했는데 nginx 인스턴스가 동일한 서버에서 실행되고 있으므로 다음과 같습니다. </p>
<pre class="brush:php;toolbar:false;">http:
프록시: 127.0.0.1</pre>
<p>전달된 URI에서 /admin 경로를 전달하도록 nginx 구성을 설정해 보았습니다. </p>
<pre class="brush:php;toolbar:false;">proxy_pass http://127.0.0.1:89/admin;</pre>
<p>또한 "admin/" 부분을 필터링하기 위해 Nette 라우터를 조작해 보았습니다(분명히 누락된 AdminPresenter를 찾지 않음). </p>
<pre class="brush:php;toolbar:false;">$router->addRoute('[admin/]<presenter>/<action>[/<id>]', '홈페이지: 기본값');</pre>
<p>Nette 애플리케이션이 페이지에 액세스하려고 하면 다음 오류가 발생합니다. </p>
<pre class="brush:php;toolbar:false;">TypeError: unpack()은 매개변수 2가 /var/www/app/vendor/nette/http/src/Http/Helpers에 제공된 문자열, 부울일 것으로 예상합니다. .php:49 @ http://example.com/app/</pre>
<p>누가 나에게 올바른 방향을 알려줄 수 있나요? </p>