検索
ホームページ運用・保守NginxNginx リバース プロキシと proxy_cache キャッシュを使用して CDN サーバーを構築する方法

問題が発生しました:
モバイル ユーザーが Web サーバー www.osyunwei.com にアクセスするのが非常に遅いです
解決策:
1. 場所モバイル コンピューター ルームのコンピューター 台湾 nginx リバース プロキシ サーバー
2. ドメイン名 DNS インテリジェント解決を通じて、すべてのモバイル ユーザーは www.osyunwei.com にアクセスするときに nginx リバース プロキシ サーバーに解決されます
3. nginx リバース プロキシを使用しますサーバーと Web サーバーを専用線に接続
説明:
1. Web サーバー
回線: Telecom
ip: 192.168.21.129
Domain name: 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.クライアント
行: mobile
システム: Windows 7
ip:192.168.21.130
c:\windows\system32\ drivers\etc\hosts #メモ帳を使用して開き、ファイルの末尾に次の行を追加します。
192.168.21.164 www.osyunwei.com


########## 次の操作は nginx リバース プロキシ サーバーで構成されます######################


1. selinuxをオフにする

vi /etc/selinux/config
#selinux=enforcing #コメントアウト
#selinuxtype=targeted #コメントアウト
selinux =disabled #Add
: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 #構成
make
make install
7、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 #Settings nginx を起動し、スタートアップ ファイルを編集し、次の内容を追加します。
============== ====================== =====================
#!/bin /bash
# nginx http サーバー用の nginx 起動スクリプト
# これは v. 0.0.2 バージョンです。
# chkconfig: - 85 15
# description: nginx は高性能 Web であり、プロキシ サーバー。
# 多くの機能がありますが、すべての人に適しているわけではありません。
# プロセス名: nginx
# pidfile: /var/run/nginx.pid
# config: /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/rc.d/init.d/functions
#ソース ネットワーク構成.
. /etc/sysconfig/network
# ネットワークが稼働していることを確認します。
[ ${networking} = "no" ] && exit 0
[ -x $nginxd ] | | exit 0
# nginx デーモンを開始 function.
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 $"$prog をリロードしています: "
#kill -hup `cat ${nginx_pid}`
killproc $nginxd -hup
retval=$?
echo
}
# 私たちがどのように呼ばれたかをご覧ください。
case "$1" in
start)
start

stop)
stop

reload)
reload

restart)
stop
start
;;

status)
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 # #Setstartup
/etc/rc.d/init.d/nginx restart
service nginx restart

8 にファイル実行権限を割り当てますchkconfig nginx on #Setstartup/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) nginx 実行アカウントの設定
vi /usr/local /nginx/conf/nginx.conf #編集
ユーザー none を検索;
user www www; に変更 #最初の行
(2)、nginx の空のホスト ヘッダーを禁止します
vi /usr/ local/nginx/conf/nginx.conf #Edit
サーバーを見つけて、次の内容を上の行に追加します:











#サーバー {
listen 80 デフォルト;
server_name _;
location / {
root html;
return 404;
}
location ~ /.ht {
すべて拒否;
}
}










##/etc/rc.d/init.d/nginx restart #Restart nginx
このように設定すると、空のホストヘッダーにアクセスすると、nginx404 エラーページに直接ジャンプします。
(3) nginx 仮想ホスト インクルード ファイルを追加します
cd /usr/local/nginx/conf/ #nginx インストール ディレクトリに入力します
mkdir vhost #仮想ディレクトリを作成します
vi /usr/local /nginx /conf/nginx.conf #Edit
前の手順で追加したコードを見つけて、次の内容を最後に追加します:
include vhost/*.conf;
例:









##サーバー {
listen 80 デフォルト;
サーバー名 __;
場所/ {
root html;
return 404;
}
location ~ /.ht {
すべて拒否;
}
}
include vhost/*.conf ;











(4) proxy_cache パラメータ設定インクルード ファイル
cd を追加します。 /usr/local/ nginx/conf/ #ディレクトリを入力
touch proxy.conf #ファイルの作成
vi /usr/local/nginx/conf/nginx.conf #編集
Find http { 以下に行を追加
include proxy .conf;
(5). ファイルを含むプロキシ サーバー リストを追加します
cd /usr/local/nginx/conf/ #ディレクトリを入力します
touch mysvrhost.conf #ファイルを作成します
vi /usr/ local/nginx/conf/nginx.conf #Edit
前の手順で追加したコードを見つけて、以下の行を追加します
include mysvrhost.conf;
(6) nginx を設定しますグローバルパラメータ
vi /usr /local/nginx/conf/nginx.conf #Edit
worker_processes 2; #ワーカープロセスの数はCPUのコア数または2倍です
events
{ ###use epoll; #Increase### worker_connections 65535; #最大接続数である 65535 に変更します。 ###}################次のコードは、http {part###############server_names_hash_bucket_size 128 に追加および変更されます。 ; # ###client_header_buffer_size 32kを増やす; ####large_client_header_buffers 4 32kを追加; ####client_max_body_size 300mを追加; ####tcp_nopush onを追加; #on###keepalive_timeout 60に変更; #60に変更## #tcp_nolay on; #追加 ###server_tokens off; #追加、nginx バージョン情報を表示しない ###gzip on; #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; #### を追加 (7),プロキシ キャッシュ パラメータの設定 設定 ###cd /home #ディレクトリを入力 ###mkdir -p /home/proxy_temp_dir #proxy_temp_dir および proxy_cache_dir 2 つのフォルダは同じパーティションに存在する必要があります ###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 のオリジナルコンテンツ © All Rights Reserved. 転載する場合は出典と原文リンクを明記してください ###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;####Web キャッシュ領域を設定します名前をcache_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_buffers 4 64k; ####proxy_busy_buffers_size を増やします128k; #システムがビジー状態のときに適用できる量を増やす proxy_buffers size###proxy_temp_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 #编辑

server {
listen 80;
server_name www.osyunwei.com osyunwei.com;

location /
{
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;
}

location ~ /purge(/.*) #用于清除缓存
{
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、浏览图片文件:http://www.osyunwei.com/images/nopic.gif

Nginx リバース プロキシと proxy_cache キャッシュを使用して CDN サーバーを構築する方法

2、清除这个文件缓存:http://www.osyunwei.com/purge/images/nopic.gif

Nginx リバース プロキシと proxy_cache キャッシュを使用して CDN サーバーを構築する方法

提示:successful purge,缓存文件清除成功,如果这个文件没有被缓存过,则提示:404 not found

Nginx リバース プロキシと proxy_cache キャッシュを使用して CDN サーバーを構築する方法

备注:
1、purge是ngx_cache_pure 模块指令
2、images/nopic.gif 是要清除的缓存文件url路径

至此,使用nginx反向代理和proxy_cache缓存功能配置cdn服务器教程结束。

附件:

1、nginx配置文件/usr/local/nginx/conf/nginx.conf

 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; 
}

2、被代理服务器列表文件/usr/local/nginx/conf/mysvrhost.conf

 upstream osyunweihost { 
server 192.168.21.129:80 weight=1 max_fails=2 fail_timeout=30s; 
}

3、proxy_cache参数配置文件/usr/local/nginx/conf/proxy.conf

 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;

4、虚拟主机配置文件/usr/local/nginx/conf/vhost/www.osyunwei.com.conf

 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 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事は亿速云で複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
Nginxの主な機能:パフォーマンス、スケーラビリティ、セキュリティNginxの主な機能:パフォーマンス、スケーラビリティ、セキュリティApr 13, 2025 am 12:09 AM

Nginxは、イベント駆動型のアーキテクチャと非同期処理機能を通じてパフォーマンスを向上させ、モジュラー設計と柔軟な構成を通じてスケーラビリティを向上させ、SSL/TLSの暗号化と要求レートの制限を介してセキュリティを改善します。

Nginx vs. Apache:Webホスティングとトラフィック管理Nginx vs. Apache:Webホスティングとトラフィック管理Apr 12, 2025 am 12:04 AM

Nginxは、高い並行性と低リソース消費シナリオに適していますが、Apacheは複雑な構成と機能的拡張を必要とするシナリオに適しています。 1.Nginxは、高性能と多数の同時接続を処理することで知られています。 2。Apacheは、その安定性とリッチモジュールのサポートで知られています。選択するときは、特定のニーズに基づいて決定する必要があります。

NGINX:最新のWebアプリケーション用の汎用ツールNGINX:最新のWebアプリケーション用の汎用ツールApr 11, 2025 am 12:03 AM

nginxisentialformodernwebapplicationsdueToitsRolesasareverseproxy、loadbalancer、andwebserver、weberporformanceandscalability.1)itactsasaReverseproxy、拡張、およびパフォーマンスを強化し、パフォーマンスを強化し、積極的に積極的なものを増やします

nginx SSL/TLS構成:HTTPSでWebサイトを保護しますnginx SSL/TLS構成:HTTPSでWebサイトを保護しますApr 10, 2025 am 09:38 AM

NGINXを通じてWebサイトのセキュリティを確保するには、次の手順が必要です。1。基本的な構成を作成し、SSL証明書と秘密鍵を指定します。 2。構成を最適化し、HTTP/2を有効にし、OCSPSTAPLING。 3.証明書パスや暗号化スイートの問題などの一般的なエラーをデバッグします。 4。let'sencryptの使用やセッションの多重化など、アプリケーションのパフォーマンス最適化の提案。

Nginxインタビューの質問:DevOps/System管理インタビューをAceNginxインタビューの質問:DevOps/System管理インタビューをAceApr 09, 2025 am 12:14 AM

Nginxは、高性能のHTTPおよびリバースプロキシサーバーであり、高い並行接続の取り扱いに優れています。 1)基本的な構成:ポートを聞いて静的ファイルサービスを提供します。 2)高度な構成:逆プロキシとロードバランシングを実装します。 3)デバッグスキル:エラーログを確認し、構成ファイルをテストします。 4)パフォーマンスの最適化:GZIP圧縮を有効にし、キャッシュポリシーを調整します。

nginxキャッシュテクニック:ウェブサイトのパフォーマンスの向上nginxキャッシュテクニック:ウェブサイトのパフォーマンスの向上Apr 08, 2025 am 12:18 AM

Nginxキャッシュは、次の手順を通じてWebサイトのパフォーマンスを大幅に改善できます。1)キャッシュ領域を定義し、キャッシュパスを設定します。 2)キャッシュ有効期間を構成します。 3)異なるコンテンツに従って異なるキャッシュポリシーを設定します。 4)キャッシュストレージと負荷分散を最適化します。 5)キャッシュ効果を監視およびデバッグします。これらの方法により、Nginxキャッシュはバックエンドサーバーの圧力を軽減し、応答速度とユーザーエクスペリエンスを向上させることができます。

Dockerを使用したNginx:コンテナ化されたアプリケーションの展開とスケーリングDockerを使用したNginx:コンテナ化されたアプリケーションの展開とスケーリングApr 07, 2025 am 12:08 AM

DockerComposeを使用すると、Nginxの展開と管理が簡素化され、DockerswarmまたはKubernetesをスケーリングすることは一般的な慣行です。 1)DockerComposeを使用してNginxコンテナを定義および実行する、2)DockerswarmまたはKubernetesを介してクラスター管理と自動スケーリングを実装します。

Advanced Nginx構成:マスタリングサーバーブロックとリバースプロキシAdvanced Nginx構成:マスタリングサーバーブロックとリバースプロキシApr 06, 2025 am 12:05 AM

nginxの高度な構成は、サーバーブロックとリバースプロキシを介して実装できます。1。サーバーブロックにより、複数のWebサイトを1つの場合に実行することができます。各ブロックは個別に構成されます。 2.逆プロキシは、リクエストをバックエンドサーバーに転送して、負荷分散とキャッシュアクセラレーションを実現します。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。