웹사이트 검색

Ubuntu 15.10에서 Apache용 리버스 프록시로 Nginx를 설치하는 방법


이 튜토리얼은 다음 OS 버전에 대해 존재합니다.

  • Ubuntu 12.04 LTS(Precise Pangolin)

이 페이지에서

  1. 1단계 - Apache 및 PHP 설치
  2. 2단계 - Apache 및 PHP 구성
  3. 3단계 - Nginx 설치
  4. 4단계 - Nginx 구성
  5. 5단계 - 로깅 구성
  6. 결론

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에 대한 구성을 설정했습니다.