問題が発生しました:
モバイル ユーザーが 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 サイトの他の関連記事を参照してください。