演變
單機架構:LNMP、LAMP、WAMP
性能優化:動靜分離、數據庫獨立、數據庫讀寫分離、負載均衡、雙活技術、數據庫中間件、緩存、搜索
動靜分離:靜態請求速度很快,而動態請求比較慢,因此可以單獨將動態請求的處理獨立一臺服務器。 數據庫獨立:跟多時候,數據庫是服務器的性能瓶頸,因此將數據庫獨立出來一臺服務器。 讀寫分離:當一臺數據庫服務器負載受限時,可以將讀(查詢)和寫(增刪改)的操作分別在兩臺服務器上完成。 負載均衡:一臺服務器已經不能搞定,需要多臺服務器,因此需要一臺作爲任務分發工作的服務器。 session共享:可以在負載均衡中使用ip_hash算法,也可以搭建專門的session服務器(nfs/memcache/redis) 雙活技術:萬一負載均衡服務器掛了,所以需要搞一臺備用,主備使用keepalived技術保持心跳,隨時待命 數據庫中間件:當數據的讀寫操作收到限制性(數表特別大),可以分庫分表分機器等手段以提高效率 緩存:可以保存session,甚至可以保存使用頻率較高的數據庫中的數據 搜索:當數據量特變大的時候,使用link命令,可以單獨整一臺搜索服務器(xunsearch) CDN:內容分發網絡 DNS負載均衡:在DNS解析時,一個域名解析到不同的負載均衡服務器
代理服務
正向代理:你上網的時候,請求網頁不是和真實網站進行通訊,而是將請求發給代理服務器,代理服務器請求真實的服務器,然後將數據返回給你。在網站看來,代理服務器就是一個普通的客戶端,對網站是透明的。
如:翻牆、…
反向代理:原理和正向代理一樣,也是直接請求代理服務器,然後代理服務器請求真實服務器並返回數據。在用戶看來,請求代理服務器就像是在請求真實服務器一樣,在用戶來代理服務器是透明的。
如:防火牆、…
反向代理
配置步驟:
代理服務器(nginx)
upstream apachephp{ server 真實服務器IP:80; #Apache } server { listen 80; server_name www.daili.com; #域名需要解析 location / { proxy_pass http://apachephp; #Proxy Settings proxy_redirect off; proxy_set_header Host $host; #傳遞真實的用戶IP proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504; proxy_max_temp_file_size 0; proxy_connect_timeout 90; proxy_send_timeout 90; proxy_read_timeout 90; proxy_buffer_size 4k; proxy_buffers 4 32k; proxy_busy_buffers_size 64k; proxy_temp_file_write_size 64k; } }
真實的服務
1.可以是Wampserver 2.也可以是搭建好lnmp環境的主機
eg:
1.在真實服務器上寫內容,訪問代理服務器(域名需要解析)即可
2.用戶真實的IP($_SERVER[‘REMOTE_ADDR’])會被代理服務器替換
3.用戶真實的IP需要代理服務器傳遞過去,保存在:
$_SERVER['HTTP_X_REAL_IP']
$_SERVER['HTTP_X_FORWARDED_FOR']