Nginx リバース プロキシと 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
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
2、清除这个文件缓存:http://www.osyunwei.com/purge/images/nopic.gif
提示:successful purge,缓存文件清除成功,如果这个文件没有被缓存过,则提示:404 not found
备注:
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 サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









WordPressサイトファイルアクセスが制限されています:最近.txtファイルにアクセスできない理由のトラブルシューティング。一部のユーザーは、ミニプログラムのビジネスドメイン名を構成する際に問題に遭遇しました:�...

同じシステムで複数のPHPバージョンを同時に実行することは、特に異なるプロジェクトがPHPの異なるバージョンに依存する場合、一般的な要件です。同じようになる方法...

H5プロジェクトを実行するには、次の手順が必要です。Webサーバー、node.js、開発ツールなどの必要なツールのインストール。開発環境の構築、プロジェクトフォルダーの作成、プロジェクトの初期化、コードの書き込み。開発サーバーを起動し、コマンドラインを使用してコマンドを実行します。ブラウザでプロジェクトをプレビューし、開発サーバーURLを入力します。プロジェクトの公開、コードの最適化、プロジェクトの展開、Webサーバーの構成のセットアップ。

多くのウェブサイト開発者は、ランプアーキテクチャの下でnode.jsまたはPythonサービスを統合する問題に直面しています:既存のランプ(Linux Apache MySQL PHP)アーキテクチャWebサイトのニーズ...

GiteEpages静的Webサイトの展開が失敗しました:404エラーのトラブルシューティングと解像度Giteeを使用する

PCとモバイル側で同じページを共有し、キャッシュの問題を処理する方法は? Nginxでは、Baotaの背景を使用して構築されたPHP MySQL環境、PCサイドの作成方法と...

シミュレーションログインの場合にシミュレーションログイン後に404エラーをリダイレクトするための解決策は、シミュレーションログインにSeleniumを使用すると、いくつかの困難な問題に遭遇することがよくあります。 �...

DockerfileでのCMDコマンドの効率的な使用について多くの新しいDockerユーザーがCMDを使用しています...
