Ubuntu 15.10에서 Apache용 리버스 프록시로 Nginx를 설치하는 방법
이 튜토리얼은 다음 OS 버전에 대해 존재합니다.
- Ubuntu 12.04 LTS(Precise Pangolin)
이 페이지에서
- 1단계 - Apache 및 PHP 설치
- 2단계 - Apache 및 PHP 구성
- 3단계 - Nginx 설치
- 4단계 - Nginx 구성
- 5단계 - 로깅 구성
- 결론
Nginx 또는 "engine-x"는 메모리 사용량이 적은 고성능 웹 서버로 Igor Sysoev가 2002년에 만들었습니다. Nginx는 단순한 웹 서버가 아니라 역으로도 사용할 수 있습니다. HTTP, HTTPS, POP3, SMTP, IMAP과 같은 많은 프로토콜에 대한 프록시와 부하 분산기 및 HTTP 캐시로도 사용됩니다.
Apache는 Apache Software Foundation의 오픈 소스 커뮤니티에서 유지 관리하는 가장 인기 있는 웹 서버 소프트웨어입니다. WebDav 지원 또는 mod_security와 같은 웹 애플리케이션 방화벽과 같은 Apache에 사용할 수 있는 많은 애드온 모듈이 있으며 Perl, Python, PHP와 같은 많은 웹 프로그래밍 언어를 기본 모듈을 통해 또는 cgi, fcgi 및 FPM 인터페이스를 통해 지원합니다.
이 튜토리얼에서는 Nginx를 Ubuntu 15.10의 Apache 웹 서버에 대한 캐싱 리버스 프록시로 설치하고 구성합니다. Nginx는 프런트 엔드로, Apache는 백엔드로 사용됩니다. Nginx는 사용자/브라우저의 요청에 응답하기 위해 포트 80에서 실행되며 요청은 포트 8080에서 실행 중인 Apache 서버로 전달됩니다.
1단계 - Apache 및 PHP 설치
SSH를 사용하여 우분투 서버에 로그인하고 다음을 실행하여 루트 사용자가 되십시오.
sudo su
그런 다음 apt-get 명령으로 Apache를 설치합니다.
apt-get install apache2
아파치가 설치되면 이 튜토리얼을 위해 PHP를 아파치 모듈로 설치해야 합니다.
apt-get install php5 php5-mysql libapache2-mod-php5
2단계 - Apache 및 PHP 구성
기본적으로 Apache는 포트 80에서 수신 대기합니다. 포트 80은 나중에 nginx에서 사용하므로 프록시 설정을 위해 Apache가 포트 8080에서 실행되도록 구성해야 합니다.
Apache 웹 서버의 포트를 변경하려면 Apache 구성 파일 "/etc/apache2/ports.conf"를 편집한 다음 "/etc/apache2/sites에서 가상 호스트 구성을 진행해야 합니다. -사용 가능한/" 디렉토리.
먼저 vim 편집기로 "ports.conf" 파일을 편집하여 apache의 포트를 8080으로 변경합니다.
vim /etc/apache2/ports.conf
라인 5에서 포트 80을 8080으로 변경합니다.
Listen 8080
저장 및 종료.
이제 virtualhost 디렉토리로 이동하여 "000-default.conf" 파일을 편집하십시오.
cd sites-available/
vim 000-default.conf
구성이 아래와 같은지 확인하십시오.
<VirtualHost *:8080> ServerName www.reverse.com ServerAlias reverse.com ServerAdmin DocumentRoot /var/www/html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
저장 및 종료.
다음으로 구성을 테스트하고 Apache를 다시 시작합니다.
apachectl configtest
systemctl restart apache2
마지막으로 apache와 php가 작동하는지 확인합니다. \/var/www/html/\ 디렉토리에 \info.php\라는 이름으로 새 파일을 만듭니다.
cd /var/www/html/
echo "<?php phpinfo(); ?>" > info.php
귀하의 사이트 www.reverse.com:8080/info.php를 방문하십시오.
결과는 위의 스크린샷과 유사해야 합니다.
3단계 - Nginx 설치
다음 apt-get 명령을 사용하여 Nginx를 설치합니다.
apt-get install nginx
4단계 - Nginx 구성
Nginx가 설치되면 포트 8080에서 실행되는 Apache 웹 서버의 역방향 프록시 역할을 하도록 Nginx를 구성합니다.
nginx 구성 디렉토리로 이동하여 "nginx.conf" 파일을 편집합니다.
cd /etc/nginx/
vim nginx.conf
gzip 라인의 주석을 제거하여 Nginx용 Gzip 압축을 활성화합니다.
# Gzip Settings ## gzip on; gzip_disable "msie6"; gzip_vary on; gzip_proxied any; gzip_comp_level 6; gzip_buffers 16 8k; gzip_http_version 1.1; gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
가장 중요한 것은:
gzip on : gzip 압축을 켭니다.
gzip_types : 압축할 MIME 유형 목록입니다.
gzip_proxied any : 프록시된 요청에 대한 압축을 활성화합니다.
gzip 설정 바로 아래에 다음 프록시 캐시 설정을 추가합니다.
# Proxy Cache Settings proxy_cache_path /var/cache levels=1:2 keys_zone=reverse_cache:60m inactive=90m max_size=1000m;
프록시 캐시의 디렉토리는 /var/cache입니다.
levels는 캐시가 파일 시스템에 저장되는 방식을 Nginx에 알려주는 지시어입니다.
key_zone은 캐시 영역의 이름일 뿐이며 자유롭게 선택할 수 있지만 이름에 특수 문자나 공백을 추가하지 마십시오. 여기서는 "reverse_cache"라는 이름을 사용하겠습니다.
저장 및 종료.
이제 "/etc/nginx/sites-available" 디렉토리에 가상 호스트를 구성합니다.
이 자습서에서는 "reverse.conf"라는 새 가상 호스트 구성 파일을 만듭니다. 방금 디렉토리로 이동하여 vim으로 새 파일을 만듭니다.
cd /etc/nginx/sites-available
vim reverse.conf
아래 구성을 붙여넣습니다.
server { listen 80; # Site Directory same in the apache virtualhost configuration root /var/www/html; index index.php index.html index.htm; # Domain server_name www.reverse.com reverse.com; location / { try_files $uri $uri/ /index.php; } # Reverse Proxy and Proxy Cache Configuration location ~ \.php$ { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header Host $host; proxy_pass http://127.0.0.1:8080; # Cache configuration proxy_cache reverse_cache; proxy_cache_valid 3s; proxy_no_cache $cookie_PHPSESSID; proxy_cache_bypass $cookie_PHPSESSID; proxy_cache_key "$scheme$host$request_uri"; add_header X-Cache $upstream_cache_status; } # Enable Cache the file 30 days location ~* .(jpg|png|gif|jpeg|css|mp3|wav|swf|mov|doc|pdf|xls|ppt|docx|pptx|xlsx)$ { proxy_cache_valid 200 120m; expires 30d; proxy_cache reverse_cache; access_log off; } # Disable Cache for the file type html, json location ~* .(?:manifest|appcache|html?|xml|json)$ { expires -1; } location ~ /\.ht { deny all; } }
저장 및 종료.
그런 다음 새 가상 호스트 구성을 활성화합니다.
ln -s /etc/nginx/sites-available/reverse.conf /etc/nginx/sites-enabled/
마지막으로 nginx 구성을 테스트하고 nginx를 다시 시작합니다.
nginx -t
systemctl restart nginx
Nginx는 이제 리버스 프록시로 구성됩니다. curl로 테스트할 수 있습니다.
curl -I www.reverse.com
Cache-Control: no-cache는 index.html을 의미하며 .html로 끝나는 모든 파일은 캐시되지 않습니다.
다른 테스트:
curl -I www.reverse.com/info.php
X-Cache: HIT는 페이지가 Nginx 캐시에 의해 제공되고 있음을 의미합니다.
5단계 - 로깅 구성
이 단계에서는 로컬 IP 대신 방문자의 실제 IP를 기록하도록 Apache를 구성합니다.
Apache 모듈 "libapache2-mod-rpaf"를 설치하고 모듈 구성 파일을 수정하세요.
sudo apt-get install libapache2-mod-rpaf
cd /etc/apache2/mods-available/
vim rpaf.conf
서버 IP를 10행에 추가하십시오. 내 서버의 IP는 192.168.1.108.입니다.
RPAFproxy_ips 127.0.0.1 192.168.1.108 ::1
저장하고 종료합니다.
이제 아파치를 다시 시작하십시오.
systemctl restart apache2
tail 명령어로 apache 액세스 로그를 확인하여 rpaf를 테스트합니다.
tail -f /var/log/apache2/access.log
그게 다야.
Nginx는 Apache 웹 서버 앞에 리버스 프록시로 설치됩니다. 방문자가 php 파일을 요청하면 포트 8080에서 요청이 apache로 전달되고 apache 로그 파일에서 실제 ip 방문자를 볼 수 있습니다.
결론
Nginx는 HTTP 및 HTTPS 프로토콜에 대한 웹 서버 및 역방향 프록시 역할을 할 수 있는 메모리 사용량이 적은 빠르고 인기 있는 웹 서버입니다. Apache용 Nginx 리버스 프록시는 Nginx를 프런트 엔드로 사용하고 Apache를 백 엔드로 사용하는 설정입니다. Nginx는 브라우저에서 들어오는 요청을 처리하고 이를 Apache 백엔드로 전달합니다. 이 자습서에서는 PHP 파일 요청 및 이미지를 캐시하는 http 캐시로 nginx에 대한 구성을 설정했습니다.