NGINX 전단 APACHE 백 엔 드 서버 설정

18665 단어 서버 운영
nginx 처리 정적 내용 은 좋 은 손 입 니 다. apache 는 메모리 가 좀 많 고 성능 이 약간 떨 어 지지 만 안정 적 입 니 다.nginx 의 FastCGI 는 502 Bad Gateway 오류 가 발생 할 때 가 있 습 니 다.선택 할 수 있 는 방법 은 nginx 가 전단 대 리 를 하고 정적 내용 을 처리 하 며 동적 요청 을 모두 백 엔 드 apache 에 전달 하 는 것 입 니 다.본 고 는 Nginx 를 전단 으로 하고 apache 를 백 엔 드 로 하 는 것 이다.사용자 가 80 포트 의 nginx 를 방문 한 다음 에 nginx 는 정적 내용 을 자신 에 게 남 겨 주 고 나머지 는 80 포트 가 아 닌 apache 에 게 전달 합 니 다. apache 처리 가 끝 난 후에 nginx 에 게 다시 전달 합 니 다.예 를 들 어 여기 서 저 는 각각 www. test. com / a. html, www. test. com / info. php 를 방문 합 니 다.nginx 는 앞 에 있 기 때문에 nginx 의 방문 로 그 는 모두 a. html, info. phop 의 기록 이 있어 야 합 니 다.한편, apache 는 백 엔 드 로 phop 요청 만 처리 하고 info. phop 의 방문 기록 만 있어 야 합 니 다.
구현: 1. nginx 프로필 을 수정 하여 phop 동적 요청 을 apache 에 전송 합 니 다.
# cat /usr/local/nginx/conf/vhosts/test.conf
server
{
    listen       80;
    server_name www.test.com test.com;
    index index.html index.htm index.php default.html default.htm default.php;
    root  /home/www/data/test;
    access_log  /usr/local/nginx/logs/test-access.log;
    # nginx      ,       Apache
    error_page 404 @proxy;
    #     lnmp ,nginx   php     127.0.0.1:9000。   apache   ,       。
    #location ~ .*\.(php|php5)?$
    #{
    #    fastcgi_pass  127.0.0.1:9000;
    #    fastcgi_index index.php;
    #    include fastcgi.conf;
    #}
    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
    {
        expires      30d;
    }
    location ~ .*\.(js|css)?$
    {
        expires      12h;
    }
    #     .php       Apache
    location ~ \.php$ {
        #                 header   
        proxy_set_header Host $http_host;
        #            IP
        proxy_set_header X-Real-IP $remote_addr;
        #     php           IP
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass   http://127.0.0.1:8080;
    }
    # nginx      ,       Apache
    location @proxy {
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://127.0.0.1:8080;
    }
}

그리고 nginx 감청 80 포트, apache 감청 8080 포트 를 켜 고 phop 을 켜 면 됩 니 다.여기, nginx, apache 의 방문 로 그 를 동시에 엽 니 다.내 가 www. test. com / a. html, www. test. com / info. php 를 방 문 했 을 때 nginx 는 모든 a. html, info. html 의 방문 요청 을 기록 했다.nginx 접근 로그
192.168.45.30 - - [19/Jun/2013:14:41:06 +0800] "GET /a.html HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.110 Safari/537.36"
192.168.45.30 - - [19/Jun/2013:14:41:06 +0800] "GET /favicon.ico HTTP/1.1" 404 209 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.110 Safari/537.36"
192.168.45.30 - - [19/Jun/2013:14:41:08 +0800] "GET /info.php HTTP/1.1" 200 10518 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.110 Safari/537.36"
192.168.45.30 - - [19/Jun/2013:14:41:08 +0800] "GET /info.php?=PHPE9568F35-D428-11d2-A769-00AA001ACF42 HTTP/1.1" 200 2158 "http://www.test.com/info.php" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.110 Safari/537.36"
192.168.45.30 - - [19/Jun/2013:14:41:08 +0800] "GET /info.php?=PHPE9568F34-D428-11d2-A769-00AA001ACF42 HTTP/1.1" 200 2536 "http://www.test.com/info.php" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.110 Safari/537.36"
192.168.45.30 - - [19/Jun/2013:14:41:08 +0800] "GET /favicon.ico HTTP/1.1" 404 209 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.110 Safari/537.36"
192.168.45.30 - - [19/Jun/2013:14:41:09 +0800] "GET /info.php HTTP/1.1" 200 10518 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.110 Safari/537.36"

내 가 www. test. com / a. html, www. test. com / info. php 를 방 문 했 을 때 apache 는 info. html 의 방문 요청 만 기록 했다.nginx 가 php 요청 을 apache 에 전달 했다 는 것 을 설명 합 니 다.여기 서 볼 수 있 는 출처 는 모두 127.0.0.1 이다.실제 소스 ip 가 아 닙 니 다.apache 접근 로그
127.0.0.1 - - [19/Jun/2013:11:04:16 +0800] "GET /favicon.ico HTTP/1.0" 404 209
127.0.0.1 - - [19/Jun/2013:11:04:23 +0800] "GET /favicon.ico HTTP/1.0" 404 209
127.0.0.1 - - [19/Jun/2013:11:04:31 +0800] "GET /favicon.ico HTTP/1.0" 404 209
127.0.0.1 - - [19/Jun/2013:11:04:34 +0800] "GET /favicon.ico HTTP/1.0" 404 209
127.0.0.1 - - [19/Jun/2013:11:04:39 +0800] "GET /favicon.ico HTTP/1.0" 404 209
127.0.0.1 - - [19/Jun/2013:11:05:09 +0800] "GET /favicon.ico HTTP/1.0" 404 209
127.0.0.1 - - [19/Jun/2013:11:05:18 +0800] "GET /favicon.ico HTTP/1.0" 404 209
127.0.0.1 - - [19/Jun/2013:11:05:24 +0800] "GET /info.php HTTP/1.0" 200 55447
127.0.0.1 - - [19/Jun/2013:11:05:24 +0800] "GET /info.php?=PHPE9568F34-D428-11d2-A769-00AA001ACF42 HTTP/1.0" 200 2524
127.0.0.1 - - [19/Jun/2013:11:05:24 +0800] "GET /info.php?=PHPE9568F35-D428-11d2-A769-00AA001ACF42 HTTP/1.0" 200 2146
127.0.0.1 - - [19/Jun/2013:11:05:24 +0800] "GET /favicon.ico HTTP/1.0" 404 209

2. apache mod 추가rpaf, nginx 가 전송 한 실제 IP mod 가 져 오기rpaf 모듈 은 반드시 설치 해 야 하 는 것 이 아 닙 니 다. apache 로 그 를 열 어야 하 는 것 이 아니 라, nginx 로그 가 있 기 때문에 apache 로 그 를 열 면 중복 되 는 것 이 아 닙 니 다.Apache rpaf 모듈 은 Nginx 가 전송 한 실제 IP 를 가 져 오 는 역할 을 합 니 다. 그렇지 않 으 면 Apache 날 에 방문 한 IP 는 모두 127.0.0.1 입 니 다.
# wget http://stderr.net/apache/rpaf/download/mod_rpaf-0.6.tar.gz
# tar zxvf mod_rpaf-0.6.tar.gz
# cd mod_rpaf-0.6
# /usr/local/www/apache/bin/apxs -i -c -n mod_rpaf-2.0.so mod_rpaf-2.0.c

설치 중 오류 가 발생 하면: 'connrec’ has no member named ‘remote_ip, 부록 1. mod 참조rpaf-2.0.c error: ‘conn_rec’ has no member named ‘remote_ip
# vim /usr/local/apache/conf/httpd.conf  // LoadModule       
LoadModule rpaf_module modules/mod_rpaf-2.0.so
RPAFenable On
RPAFproxy_ips 127.0.0.1
RPAFsethostname On
RPAFheader X-Forwarded-For

다음은 apache 에 mod 를 추 가 했 습 니 다.rpaf 모듈 후 apache 접근 로그
192.168.45.30 - - [19/Jun/2013:14:41:09 +0800] "GET /info.php?=PHPE9568F35-D428-11d2-A769-00AA001ACF42 HTTP/1.1" 200 2158 "http://www.test.com/info.php" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.110 Safari/537.36"
192.168.45.30 - - [19/Jun/2013:14:41:09 +0800] "GET /info.php?=PHPE9568F34-D428-11d2-A769-00AA001ACF42 HTTP/1.1" 200 2536 "http://www.test.com/info.php" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.110 Safari/537.36"
192.168.45.30 - - [19/Jun/2013:14:41:09 +0800] "GET /favicon.ico HTTP/1.1" 404 209 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.110 Safari/537.36"
192.168.45.30 - - [19/Jun/2013:14:41:09 +0800] "GET /info.php HTTP/1.1" 200 10520 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.110 Safari/537.36"
192.168.45.30 - - [19/Jun/2013:14:41:09 +0800] "GET /info.php?=PHPE9568F34-D428-11d2-A769-00AA001ACF42 HTTP/1.1" 200 2536 "http://www.test.com/info.php" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.110 Safari/537.36"

좋은 웹페이지 즐겨찾기