문제 발생:
모바일 사용자가 웹 서버 www.osyunwei.com에 액세스하는 속도가 매우 느립니다. 해결 방법:
1 모바일 컴퓨터실에 nginx 역방향 프록시 서버를 배치합니다2. 도메인 이름 dns, all 모바일 사용자가 www.osyunwei.com을 방문하면 nginx 역방향 프록시 서버
3로 확인됩니다. nginx 역방향 프록시 서버와 웹 서버
사이에 전용 회선 연결이 사용됩니다. 지침:
1. 웹 서버라인: Telecom
ip: 192.168 .21.129
도메인 이름: www.osyunwei.com
2.nginx 역방향 프록시 서버
라인: mobile
시스템: centos 6.2
ip: 192.168.21.164
vi /etc/hosts # 편집하여 파일 끝에 다음 줄을 추가하세요
192.168 .21.129 www.osyunwei.com
3. Client
Line: Mobile
System: windows 7
ip:192.168.21.130
c:windowssystem32driversetchosts #메모장으로 열고 추가 파일 끝에 다음 줄
192.168.21.164 www.osyunwei .com
##################다음 작업은 nginx 리버스에서 구성됩니다. 프록시 서버############### #### status) server { location / { location ~ /purge(/.*) #用于清除缓存 1、浏览图片文件:http://www.osyunwei.com/images/nopic.gif 2、清除这个文件缓存:http://www.osyunwei.com/purge/images/nopic.gif 提示:successful purge,缓存文件清除成功,如果这个文件没有被缓存过,则提示:404 not found 备注: 至此,使用nginx反向代理和proxy_cache缓存功能配置cdn服务器教程结束。 附件: 1、nginx配置文件/usr/local/nginx/conf/nginx.conf 2、被代理服务器列表文件/usr/local/nginx/conf/mysvrhost.conf 3、proxy_cache参数配置文件/usr/local/nginx/conf/proxy.conf 4、虚拟主机配置文件/usr/local/nginx/conf/vhost/www.osyunwei.com.conf 扩展阅读:
1. selinux를 끄세요
vi /etc/selinux/config
#selinux=enforcing #코멘트아웃
#selinuxtype=targeted #코멘트아웃
selinux=disabled #추가
:wq 저장하고 닫습니다.
shutdown -r 지금 시스템을 다시 시작하세요
2. 방화벽 포트 80을 엽니다
vi /etc/sysconfig/iptables
다음 내용을 추가하세요
-a input -m state --state new -m tcp -p tcp --dport 80 -j accept
/etc/init.d/iptables restart # 구성을 적용하려면 방화벽을 다시 시작하세요
3. 컴파일 도구를 설치하세요
yum install wget make gcc gcc-c++ zlib-devel openssl openssl-devel pcre -devel gd kernel keyutils patch perl
4. 시스템 계약
소프트웨어 소스 코드 패키지 저장 위치: /usr/local/src
소스 코드 패키지 편집 및 설치 위치: /usr/local/소프트웨어 이름
5.
cd /usr/local/ src # 디렉토리 입력
(1), nginx 다운로드 (현재 안정 버전)
wget http://nginx.org/download/nginx-1.0.12.tar.gz
(2) , pcre 다운로드(nginx pseudo-static 지원)
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.21.tar.gz
(2), ngx_cache_purge 다운로드(지우기 지정된 URL 캐시)
wget http://labs.frickle.com/files/ngx_cache_purge-1.5.tar.gz
6. pcre
cd /usr/local/src
mkdir /usr/local/pcre #를 설치하세요. 설치 디렉터리 만들기
tar zxvf pcre-8.21.tar .gz
cd pcre-8.21
./configure --prefix=/usr/local/pcre #Configure
make
make install
7, install nginx
groupadd www #www 그룹 추가
useradd -g www www -s /bin/false # nginx 실행 계정 www를 만들고 www 그룹에 가입하세요. www 사용자는 시스템에 직접 로그인할 수 없습니다
cd /usr/local/src
tar zxvf ngx_cache_purge-1.5.tar.gz
tar zxvf nginx-1.0.12.tar.gz
cd nginx-1.0.12
./configure --prefix=/usr/local/nginx --user=www --group= www --with-http_stub_status_module --with-openssl=/usr/ -- with-pcre=/usr/local/src/pcre-8.21 --add-module=../ngx_cache_purge-1.5
참고: --with- pcre=/usr/local/src/pcre-8.21은 소스 패키지를 가리킵니다. 설치 경로가 아닌 압축 해제 경로입니다. 그렇지 않으면 오류가 보고됩니다
make #Compile
make install #Install
/usr/local/nginx/sbin /nginx # nginx 시작
chown www.www -r /usr/local/nginx/ html # 디렉터리 소유자 설정
chmod 700 -r /usr/local/nginx/html # 디렉터리 권한 설정
vi /etc/rc.d /init.d/nginx # nginx를 시작하도록 설정하고 시작 파일을 편집한 후 다음 콘텐츠를 추가하세요
============================ ======================= =======
#!/bin/bash
# nginx http 서버용 nginx 시작 스크립트
# it 은 v.0.0.2 버전입니다.
# chkconfig: - 85 15
# 설명: nginx는 고성능 웹 및 프록시 서버입니다.
# 많은 기능이 있지만 모든 사람을 위한 것은 아닙니다.
# 프로세스 이름: nginx
# pidfile: /var/run/nginx.pid
# 구성: /usr/local/nginx/ conf/nginx.conf
nginxd=/usr/local/nginx/sbin/nginx
nginx_config=/usr/local/nginx /conf/nginx.conf
nginx_pid=/usr/local/nginx/logs/nginx.pid
retval =0
prog="nginx"
# 소스 함수 라이브러리.
. 기능
# 소스 네트워킹 구성.
. /etc/sysconfig/network
# 네트워킹이 작동 중인지 확인하세요.
[ ${networking} = "no" ] && exit 0
[ -x $nginxd ] || nginx 데몬 기능을 시작합니다.
start() {
if [ -e $nginx_pid ];then
echo " nginx가 이미 실행 중입니다...."
exit 1
fi
echo -n $"starting $prog: "
daemon $ nginxd -c ${nginx_config}
retval=$?
echo
[ $retval = 0 ] && touch /var/lock/subsys/nginx
return $retval
}
# nginx 데몬 기능을 중지합니다.
stop() {
echo -n $"stopping $prog: "
killproc $nginxd
retval=$?
echo
[ $retval = 0 ] && rm -f /var/lock/subsys/nginx /usr/local/nginx/logs/nginx .pid
}
reload() {
echo -n $"reloading $prog: "
#kill -hup `cat ${nginx_pid}`
killproc $nginxd -hup
retval=$?
echo
}
# 참조 우리가 어떻게 불렸는지.
case "$1" in
start)
start
stop)
stop
reload)
reload
restart)
stop
start
;;
status $prog
retval=$?
*)
echo $"사용법: $prog {start|stop|restart|reload|status|help}"
exit 1
esac
exit $retval
== ================================================= ===
:wq! 저장하고 종료
chmod 775 /etc/rc.d/init.d/nginx #파일 실행 권한 부여
chkconfig nginx on #시작 설정
/etc/rc.d/init.d/nginx restart
service nginx restart
8. nginx 구성
cp /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/nginx.confbak #nginx 구성 파일 백업
(1), 설정 up nginx 계정 실행
vi /usr/local/nginx/conf/nginx.conf #편집
사용자 찾기 none;
user www www로 변경 # 첫 번째 줄에서
(2), nginx 빈 호스트 헤더 금지
vi / usr/ local/nginx/conf/nginx.conf #Edit
서버를 찾아 위 줄에 다음 내용을 추가하세요:
###################### #### ###
server {
listen 80 default;
server_name _;
location / {
root html;
return 404;
}
location ~ /.ht {
deny all;
}
}
# #### #####################
/etc/rc.d/init.d/nginx restart #nginx를 다시 시작
이렇게 설정한 후 , 호스트 헤더는 비어 있습니다. 액세스는 nginx404 오류 페이지로 직접 이동합니다.
(3) nginx 가상 호스트 포함 파일 추가
cd /usr/local/nginx/conf/ # nginx 설치 디렉터리 입력
mkdir vhost # 가상 디렉터리 생성
vi /usr/local/nginx/conf/nginx.conf #편집
이전 단계에서 추가된 코드를 찾아 마지막에 다음 내용을 추가합니다.
include vhost/*.conf;
예:
################ ###### ######
server {
listen 80 default;
server_name _;
location / {
root html;
return 404;
}
location ~ /.ht {
모두 거부;
}
}
include vhost /*.conf;
#########################
(4), Proxy_cache 매개변수 구성 추가 include 파일
cd / usr/local/nginx/conf/ # 디렉토리 입력
touch Proxy.conf # 파일 생성
vi /usr/local/nginx/conf/nginx.conf #편집
http 찾기 { 아래 줄 추가
include proxy.conf;
(5) 프록시 서버 목록에 포함된 파일 추가
cd /usr/local/nginx/conf/ #디렉터리 입력
touch mysvrhost.conf #파일 생성
vi /usr/local/ nginx/conf/nginx.conf #편집
이전 단계에서 추가된 코드를 찾아 아래 줄을 추가합니다.
include mysvrhost.conf;
(6), nginx 전역 매개변수 설정
vi /usr/local/nginx/conf/nginx .conf #Edit
worker_processes 2; #작업자 프로세스 수는 CPU의 코어 수 또는 두 배입니다.
events
{
use epoll; #추가
worker_connections 65535; #최대 연결 수를 65535로 수정합니다.
}
###########다음 코드는 http { part############
server_names_hash_bucket_size 128 #Add
client_header_buffer_size 32k에 추가되고 수정됩니다. ; #
large_client_header_buffers 4 32k 추가; #
tcp_nopush on 추가 #60
tcp_nodelay로 수정 on; #추가, nginx 버전 표시 안 함 정보
gzip on
gzip_min_length 1k로 수정; #
gzip_http_version 1.1 추가 #
gzip_types text/plain application/x-javascript text/css application/xml 추가 ; # 추가
gzip_vary on; #추가
(7), 프록시_cache 매개변수 구성 설정
cd /home # 디렉토리 입력
mkdir -p /home/proxy_temp_dir # 두 폴더 Proxy_temp_dir 및 Proxy_cache_dir은 동일한 파티션에 있어야 합니다
mkdir - p /home /proxy_cache_dir # 두 폴더proxy_cache_dir 및 Proxy_temp_dir은 동일한 파티션에 있어야 합니다
chown www.www -r Proxy_cache_dir Proxy_temp_dir # 디렉터리 소유자 설정
chmod -r 777 Proxy_cache_dir Proxy_temp_dir # 디렉터리 권한 설정
시스템 운영 및 유지 관리 www.osyunwei .com 참고 사항: qihang01 원본 콘텐츠 © 재인쇄 시 원본 및 원본 텍스트 링크를 표시하세요.
cd /usr/local/nginx/conf/ #디렉토리를 입력하세요
vi proxy.conf #편집, 다음을 추가하세요. code
proxy_temp_path /home/proxy_temp_dir ; #임시 파일 디렉터리 지정
proxy_cache_path /home/proxy_cache_dirlevels=1:2keys_zone=cache_one:50m inactive=1d max_size=1g;
#웹 캐시 영역 이름을 cash_one으로 설정, 메모리 캐시는 50MB로 설정되며, 1일 이내에 사용하지 않으면 자동으로 지워집니다. 액세스된 파일의 경우 하드 디스크 캐시는 1GB입니다.
client_body_buffer_size 512k; #버퍼 프록시가 클라이언트 요청을 버퍼링할 수 있는 최대 바이트 수를 늘립니다.
proxy_connect_timeout 60; #백엔드 서버 연결 시간 제한을 늘립니다.
proxy_read_timeout 60 #백엔드 서버가 요청에 응답하는 시간 제한을 늘립니다. proxy_send_timeout 60; #종료 서버 전송 데이터 시간 초과
proxy_buffer_size 32k; #프록시 요청 버퍼 크기 증가
proxy_busy_buffers_size 128k; #시스템 사용량이 많을 때 적용할 수 있는 Proxy_buffers 크기 증가 _file_write_size 128k; #프록시 캐시 임시 파일 크기 늘리기
proxy_next_upstream error timeout invalid_header http_500 http_503 http_404; #增加故障转移,如果后端的服务器返回502、504、执行超时等错误,自动将请求转发到upstream负载均衡池中的另一台服务器,实现故障转移。proxy_cache cache_one; #增加使用web缓存区cache_one
(八)、设置被代理服务器文件列表
cd /usr/local/nginx/conf/ #进入目录
vi mysvrhost.conf #编辑,添加以下代码
upstream osyunweihost {
server 192.168.21.129:80 weight=1 max_fails=2 fail_timeout=30s;
}
(九)、新建虚拟主机配置文件
cd /usr/local/nginx/conf/vhost #进入虚拟主机目录
touch www.osyunwei.com.conf #建立虚拟主机配置文件
vi www.osyunwei.com.conf #编辑
listen 80;
server_name www.osyunwei.com osyunwei.com;
{
proxy_pass http://osyunweihost;
proxy_cache_key $host$uri$is_args$args; #增加设置web缓存的key值,nginx根据key值md5哈希存储缓存
proxy_set_header host $host;
proxy_set_header x-forwarded-for $remote_addr;
proxy_cache_valid 200 304 12h;
expires 2d;
}
location ~ .*\.(php|jsp|cgi|asp|aspx|flv|swf|xml)?$ #列出的扩展名文件不缓存。
proxy_set_header host $host;
proxy_set_header x-forwarded-for $remote_addr;
proxy_pass http://osyunweihost;
}
access_log off;
}
{
allow 127.0.0.1;
allow 192.168.21.0/24; #设置只允许指定的ip或ip段才可以清除url缓存。
deny all;
proxy_cache_purge cache_one $host$1$is_args$args;
}
###################以上操作在nginx反向代理服务器上配置###################
9、ngx_cache_pure清除缓存模块使用说明
说明:根据配置只允许192.168.21.0/24 ip段的主机才可以清除url缓存,现在我使用的客户机ip是:192.168.21.130,有权限清除url缓存。
1、purge是ngx_cache_pure 模块指令
2、images/nopic.gif 是要清除的缓存文件url路径 user www www;
worker_processes 2;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
use epoll;
worker_connections 65535;
}
http {
include proxy.conf;
include mysvrhost.conf;
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
server_names_hash_bucket_size 128;
client_header_buffer_size 32k;
large_client_header_buffers 4 32k;
client_max_body_size 300m;
sendfile on;
tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 60;
tcp_nodelay on;
server_tokens off;
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.1;
gzip_comp_level 2;
gzip_types text/plain application/x-javascript text/css application/xml;
gzip_vary on;
server {
listen 80 default;
server_name _;
location / {
root html;
return 404;
}
location ~ /.ht {
deny all;
}
}
include vhost/*.conf;
}
upstream osyunweihost {
server 192.168.21.129:80 weight=1 max_fails=2 fail_timeout=30s;
}
proxy_temp_path /home/proxy_temp_dir;
proxy_cache_path /home/proxy_cache_dir levels=1:2 keys_zone=cache_one:500m inactive=1d max_size=30g;
client_body_buffer_size 512k;
proxy_connect_timeout 60;
proxy_read_timeout 60;
proxy_send_timeout 60;
proxy_buffer_size 32k;
proxy_buffers 4 64k;
proxy_busy_buffers_size 128k;
proxy_temp_file_write_size 128k;
proxy_next_upstream error timeout invalid_header http_500 http_503 http_404;
proxy_cache cache_one;
server {
listen 80;
server_name www.osyunwei.com osyunwei.com;
location /
{
proxy_pass http://osyunweihost;
proxy_cache_key $host$uri$is_args$args;
proxy_set_header host $host;
proxy_set_header x-forwarded-for $remote_addr;
proxy_cache_valid 200 304 12h;
expires 2d;
}
location ~ /purge(/.*)
{
allow 127.0.0.1;
allow 192.168.21.0/24;
deny all;
proxy_cache_purge cache_one $host$1$is_args$args;
}
location ~ .*\.(php|jsp|cgi|asp|aspx|flv|swf|xml)?$
{
proxy_set_header host $host;
proxy_set_header x-forwarded-for $remote_addr;
proxy_pass http://osyunweihost;
}
access_log off;
}
#################################################################
nginx修改版本等信息
vi /usr/local/src/nginx-1.0.12/src/core/nginx.h #编译前编辑
#define nginx_version
#define nginx_version
#define nginx_ver
#define nginx_var
修改上面的信息,即可更改nginx显示版本。
vi /usr/local/src/http/ngx_http_special_response.c #编译前编辑
static u_char ngx_http_error_full_tail[] =
static u_char ngx_http_error_tail[] =
修改上面的信息为你自己的。
위 내용은 Nginx 역방향 프록시 및 Proxy_cache 캐시를 사용하여 CDN 서버를 구축하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!