首頁 運維 Nginx 怎麼使用Nginx反向代理與proxy_cache快取搭建CDN伺服器

怎麼使用Nginx反向代理與proxy_cache快取搭建CDN伺服器

May 12, 2023 pm 05:43 PM
nginx cdn proxy_cache

碰到問題:
行動用戶訪問web伺服器www.osyunwei.com很慢
解決方案:
1、在行動機房放置一台nginx反向代理伺服器
2、透過網域名稱dns智慧解析,所有行動用戶造訪www.osyunwei.com時解析到nginx反向代理伺服器
3、nginx反向代理伺服器與web伺服器之間採用專線連線
說明:
1、網路伺服器
線路:電信
ip:192.168.21.129
網域:www.osyunwei.com
2、nginx反向代理伺服器
線路:移動
系統:centos 6.2
ip:192.168.21.164
vi /etc/hosts #編輯,在檔案最後新增下面一行
192.168.21.129 www. osyunwei.com
3、客戶端
線路:移動
系統: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 #增加
:wq 儲存,關閉。
shutdown -r now重新啟動系統
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 #進入目錄
(一)、下載nginx(目前穩定版)
wget http://nginx.org/download/nginx-1.0.12.tar.gz
(二)、下載pcre (支援nginx偽靜態)
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.21.tar.gz
(二)、下載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 #編譯
make 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 startup script for the nginx http server
# it is v. 0.0.2 version.
# chkconfig: - 85 15
# description: nginx is a high-performance web and proxy server.
# it has a lot of features, but it's not for everyone.
# processname: 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"
# source function library.
. /etc/rc.d/init.d/functions
# source networking configuration.
. /etc/sysconfig/network
# check that networking is up.
[ ${networking} = "no" ] && exit 0
[ -x $nginxd ] || exit 0
# start nginx daemons functions.
start() {
if [ -e $nginx_pid ];then
echo "nginx already running...."
exit 1
fi
echo -n $"starting $prog: "
daemon $nginxd -c ${nginx_config}
retval=$?
echo
[ $retval = 0 ] && touch /var/lock/subsys/nginx
return $retval
}
## stop nginx daemons functions.
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
}
# see how we were called.
casease "$1" in
start)
start

stop)
stop

#reload)
reload

restart)
stop
start
;;

status)
status $prog
retval=$?
##*)
echo $"usage: $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設定檔
(一)、設定nginx運行帳號
vi /usr/local /nginx/conf/nginx.conf #編輯
找到user nobody;修改為
user www www; #在第一行
(二)、禁止nginx空主機頭
vi /usr/ local/nginx/conf/nginx.conf #編輯
找到server,在上面一行新增如下內容:










##server {
listen 80 default;
server_name _;
location / {
root html;
return 404;
}
# location ~ /.ht {
deny all;
}
}



























#/etc/rc.d/init.d/nginx restart #重啟nginx
這樣設定之後,空主機頭存取會直接跳到nginx404錯誤頁面。
(三)、新增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 {
deny all;
}
}
include vhost/*.conf;











(四)、新增proxy_cache參數設定包含檔案
cd /usr/local/ nginx/conf/ #進入目錄
touch proxy.conf #建立檔案###vi /usr/local/nginx/conf/nginx.conf #編輯###找到http { 在下面新增一行###include proxy .conf;###(五)、新增被代理伺服器清單包含檔案###cd /usr/local/nginx/conf/ #進入目錄###touch mysvrhost.conf #建立檔案###vi /usr/ local/nginx/conf/nginx.conf #編輯###找到上一個步驟新增的程式碼,在下方新增一行###include mysvrhost.conf;###(六)、設定nginx全域參數###vi /usr /local/nginx/conf/nginx.conf #編輯###worker_processes 2; # 工作進程數,為cpu的核心數或兩倍###events###{###use epoll; #增加#### worker_connections 65535; #修改為65535,最大連線數。 ###}################以下程式碼在http { 部分增加與修改#################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; #修改為onon##keepa_delDft on; #增加###server_tokens off; #增加,不顯示nginx版本資訊###gzip on; #修改為on###gzip_min_length 1k; #增加###gzip_buffers 4 16k; #增加###gzip_http_version 1.11 ; #增加###gzip_comp_level 2; #增加###gzip_types text/plain application/x-javascript text/css application/xml; #增加###gzip_vary on; #增加###(七)、設定proxy_cache###gzip_vary on; #增加###(七)、設定proxy_cache參數參數參數設定###cd /home #進入目錄###mkdir -p /home/proxy_temp_dir #proxy_temp_dir與proxy_cache_dir這兩個資料夾必須在同一個分割區###mkdir -p /home/proxy_cache_dir #proxy_cache###mkdir -p /home/proxy_cache_dir #proxy_cache_dirproxy_tempdirproxy_temp_temp_temp_Pg個資料夾必須在同一個分割區###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 #編輯,加入以下程式碼###proxy_temp_path /home/proxy_temp_dir; #指定暫存檔案目錄###proxy_cache_path /home/proxy_cache_dir levels=1:2 keys_zone=cache_one:50m inactive=1d max_size=1g;####webweb快取區名稱為cache_one,記憶體為快取50mb,自動清除1天內沒有被存取的文件,硬碟快取為1gb。 ###client_body_buffer_size 512k; #增加緩衝區代理緩衝客戶端請求的最大位元組數###proxy_connect_timeout 60; #增加連線後端伺服器逾時時間###proxy_read_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大小###proxy_temp_file_write_size 128k; #增加proxy快取暫存檔案的大小###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中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1665
14
CakePHP 教程
1424
52
Laravel 教程
1322
25
PHP教程
1270
29
C# 教程
1250
24
nginx在windows中怎麼配置 nginx在windows中怎麼配置 Apr 14, 2025 pm 12:57 PM

如何在 Windows 中配置 Nginx?安裝 Nginx 並創建虛擬主機配置。修改主配置文件並包含虛擬主機配置。啟動或重新加載 Nginx。測試配置並查看網站。選擇性啟用 SSL 並配置 SSL 證書。選擇性設置防火牆允許 80 和 443 端口流量。

docker怎麼啟動容器 docker怎麼啟動容器 Apr 15, 2025 pm 12:27 PM

Docker 容器啟動步驟:拉取容器鏡像:運行 "docker pull [鏡像名稱]"。創建容器:使用 "docker create [選項] [鏡像名稱] [命令和參數]"。啟動容器:執行 "docker start [容器名稱或 ID]"。檢查容器狀態:通過 "docker ps" 驗證容器是否正在運行。

docker容器名稱怎麼查 docker容器名稱怎麼查 Apr 15, 2025 pm 12:21 PM

可以通過以下步驟查詢 Docker 容器名稱:列出所有容器(docker ps)。篩選容器列表(使用 grep 命令)。獲取容器名稱(位於 "NAMES" 列中)。

怎麼查看nginx是否啟動 怎麼查看nginx是否啟動 Apr 14, 2025 pm 01:03 PM

確認 Nginx 是否啟動的方法:1. 使用命令行:systemctl status nginx(Linux/Unix)、netstat -ano | findstr 80(Windows);2. 檢查端口 80 是否開放;3. 查看系統日誌中 Nginx 啟動消息;4. 使用第三方工具,如 Nagios、Zabbix、Icinga。

docker怎麼創建容器 docker怎麼創建容器 Apr 15, 2025 pm 12:18 PM

在 Docker 中創建容器: 1. 拉取鏡像: docker pull [鏡像名] 2. 創建容器: docker run [選項] [鏡像名] [命令] 3. 啟動容器: docker start [容器名]

nginx怎麼配置雲服務器域名 nginx怎麼配置雲服務器域名 Apr 14, 2025 pm 12:18 PM

在雲服務器上配置 Nginx 域名的方法:創建 A 記錄,指向雲服務器的公共 IP 地址。在 Nginx 配置文件中添加虛擬主機塊,指定偵聽端口、域名和網站根目錄。重啟 Nginx 以應用更改。訪問域名測試配置。其他注意事項:安裝 SSL 證書啟用 HTTPS、確保防火牆允許 80 端口流量、等待 DNS 解析生效。

nginx怎麼查版本 nginx怎麼查版本 Apr 14, 2025 am 11:57 AM

可以查詢 Nginx 版本的方法有:使用 nginx -v 命令;查看 nginx.conf 文件中的 version 指令;打開 Nginx 錯誤頁,查看頁面的標題。

nginx服務器掛了怎麼辦 nginx服務器掛了怎麼辦 Apr 14, 2025 am 11:42 AM

當 Nginx 服務器宕機時,可執行以下故障排除步驟:檢查 nginx 進程是否正在運行。查看錯誤日誌以獲取錯誤消息。檢查 nginx 配置語法正確性。確保 nginx 具有訪問文件所需的權限。檢查文件描述符打開限制。確認 nginx 正在偵聽正確的端口。添加防火牆規則以允許nginx流量。檢查反向代理設置,包括後端服務器可用性。如需進一步幫助,請聯繫技術支持。

See all articles