Nginx 역방향 프록시 및 Proxy_cache 캐시를 사용하여 CDN 서버를 구축하는 방법
문제 발생:
모바일 사용자가 웹 서버 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











Linux에서 Nginx를 시작하는 단계 : Nginx가 설치되어 있는지 확인하십시오. systemctl start nginx를 사용하여 nginx 서비스를 시작하십시오. SystemCTL을 사용하여 NGINX를 사용하여 시스템 시작시 NGINX의 자동 시작을 활성화하십시오. SystemCTL 상태 nginx를 사용하여 시작이 성공했는지 확인하십시오. 기본 환영 페이지를 보려면 웹 브라우저의 http : // localhost를 방문하십시오.

Windows에서 Nginx를 구성하는 방법은 무엇입니까? nginx를 설치하고 가상 호스트 구성을 만듭니다. 기본 구성 파일을 수정하고 가상 호스트 구성을 포함하십시오. 시작 또는 새로 고침 Nginx. 구성을 테스트하고 웹 사이트를보십시오. SSL을 선택적으로 활성화하고 SSL 인증서를 구성하십시오. 포트 80 및 443 트래픽을 허용하도록 방화벽을 선택적으로 설정하십시오.

nginx가 시작되었는지 확인하는 방법 : 1. 명령 줄을 사용하십시오 : SystemCTL 상태 nginx (linux/unix), netstat -ano | Findstr 80 (Windows); 2. 포트 80이 열려 있는지 확인하십시오. 3. 시스템 로그에서 nginx 시작 메시지를 확인하십시오. 4. Nagios, Zabbix 및 Icinga와 같은 타사 도구를 사용하십시오.

Nginx 서버를 시작하려면 다른 운영 체제에 따라 다른 단계가 필요합니다. Linux/Unix System : Nginx 패키지 설치 (예 : APT-Get 또는 Yum 사용). SystemCTL을 사용하여 nginx 서비스를 시작하십시오 (예 : Sudo SystemCtl start nginx). Windows 시스템 : Windows 바이너리 파일을 다운로드하여 설치합니다. nginx.exe 실행 파일을 사용하여 nginx를 시작하십시오 (예 : nginx.exe -c conf \ nginx.conf). 어떤 운영 체제를 사용하든 서버 IP에 액세스 할 수 있습니다.

Nginx 403 금지 된 오류를 수정하는 방법은 무엇입니까? 파일 또는 디렉토리 권한을 확인합니다. 2. 확인 파일을 확인하십시오. 3. nginx 구성 파일 확인; 4. nginx를 다시 시작하십시오. 다른 가능한 원인으로는 방화벽 규칙, Selinux 설정 또는 응용 프로그램 문제가 있습니다.

서버는 요청 된 리소스에 액세스 할 수있는 권한이 없으므로 Nginx 403 오류가 발생합니다. 솔루션에는 다음이 포함됩니다. 파일 권한 확인 권한을 확인하십시오. .htaccess 구성을 확인하십시오. nginx 구성을 확인하십시오. Selinux 권한을 구성하십시오. 방화벽 규칙을 확인하십시오. 브라우저 문제, 서버 장애 또는 기타 가능한 오류와 같은 다른 원인을 해결하십시오.

Linux에서는 다음 명령을 사용하여 nginx가 시작되었는지 확인하십시오. SystemCTL 상태 Nginx 판사 명령 출력에 따라 : "active : running"이 표시되면 Nginx가 시작됩니다. "Active : 비활성 (죽음)"이 표시되면 Nginx가 중지됩니다.

Nginx 크로스 도메인 문제를 해결하는 두 가지 방법이 있습니다. 크로스 도메인 응답 헤더 수정 : 교차 도메인 요청을 허용하고 허용 된 메소드 및 헤더를 지정하고 캐시 시간을 설정하는 지시문을 추가하십시오. CORS 모듈 사용 : 모듈을 활성화하고 CORS 규칙을 구성하여 크로스 도메인 요청, 메소드, 헤더 및 캐시 시간을 허용합니다.
