Debian wheezy 서버에 nginx를 프록시로 설치하는 경우 모든 정적 콘텐츠가 nginx에서 직접 전달되도록 Apache 구성을 변경하려면 어떤 단계를 수행해야 합니까?
내 서버에는 이미 약 250개의 도메인이 실행 중이며 이 문제를 해결하기 위해 nginx를 통해 모든 것을 다시 라우팅하는 것을 고려하고 있습니다. apache2.2는 막힘을 방지하기 위해 1024보다 강력한 DH 암호를 사용할 수 없습니다.
답변1
Nginx 뒤의 Apache가 프록시 및 정적 콘텐츠 서버로 작동하도록 하려면 다음 두 가지 솔루션이 있습니다.
1.static.yoursite.asd와 같은 정적 콘텐츠에 대해서만 새 하위 도메인을 만들 수 있습니다. 물론 DNS 레코드를 수정하라는 메시지가 표시됩니다(수행 방법은 다음과 같습니다).http://content.websitegear.com/article/subdomain_setup.htm). Nginx 구성 파일에는 2개의 서버 블록이 필요합니다. 하나는 정적 콘텐츠를 제공하는 데 사용되고 다른 하나는 트래픽을 Apache로 리디렉션하는 데 사용됩니다. 정적 콘텐츠에 대한 서버 블록은 다음과 같습니다.
server {
listen 80;
server_name static.localhost;
location / {
root /path/to/static/content;
# 404 if file does not exist
try_files $uri $uri/ =404;
}
}
다음은 트래픽을 Apache로 리디렉션하는 샘플 서버 블록입니다. (Apache가 포트 8000에서 작동한다고 가정)
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
location / {
proxy_pass http://localhost:8000;
}
}
2.Nginx에 서버 블록이 있을 수 있지만 두 개의 다른 위치를 사용할 수 있습니다. DNS 레코드를 수정할 필요가 없기 때문에 노력이 덜 듭니다. yoursite.asd/static/ 에 정적 파일을 배치하고 루트 위치( yoursite.asd/ )에 있는 Apache로 리디렉션한다고 가정합니다.
정적 콘텐츠를 제공하는 위치의 예는 다음과 같습니다.
location /static/ {
root /path/to/content;
# we don't want to have static files only in folder "static" in
# root document, so let's rewrite it to our root document
rewrite ^/static/(.*)$ /$1 break;
}
다음은 포트 8000에서 Apache로 트래픽을 리디렉션하는 위치의 예입니다.
location / {
proxy_pass http://localhost:8000;
}