1.單一網(wǎng)站n
1)使用默認80端口訪問:
server {
? ? ? ? listen? ? ? 80;? ? ? ? ? ? ? #端口監(jiān)聽
? ? ? ? location / {
? ? ? ? ? ? root? /home/ceshi; #網(wǎng)站地址
? ? ? ? ? ? index? index.html index.htm index.php; #默認訪問頁面
? ? ? ? }
? ? ? ? error_page? 500 502 503 504? /50x.html; #錯誤頁面
? ? ? ? location = /50x.html {
? ? ? ? ? ? root? html;
? ? ? ? }
? ? ? ? access_log? logs/ceshi-access.log? main; #訪問日志
? ? ? ? error_log? logs/ceshi-error.log? notice; #錯誤日志
? ? }
2) 域名訪問或者是ip+端口訪問
server {
? ? ? ? listen? ? ? 8001;? ? ? ?#端口監(jiān)聽
? ? ? ? server_name? ceshi.loc;? ? ?#域名配置? ??
? ? ? ? location / {
? ? ? ? ? ? root? /home/ceshi;? ? ? ? ? ??#網(wǎng)站地址
? ? ? ? ? ? index? index.html index.htm index.php;? ? ? ??#定義首頁索引文件的名稱
? ? ? ? }
? ? ? ? error_page? 500 502 503 504? /50x.html;? ? ? ??#錯誤頁面
? ? ? ? location = /50x.html {
? ? ? ? ? ? root? html;
? ? ? ? }
? ? ? ? access_log? logs/ceshi-access.log? main;? ? ? ??#訪問日志
? ? ? ? error_log? logs/ceshi-error.log? notice;? ? ? ? ? ? ??#錯誤日志
? ? }
2.后端為index.php的網(wǎng)站
server {
? ? ? ? listen? ? ? 8002;
? ? ? ? root? /home/ceshi;? ? ? ? ? ? #將root變成server的全局變量
? ? ? ? location / {
? ? ? ? ? ? index? index.html index.htm index.php;? ??#默認訪問頁面
? ? ? ? }
? ? ? ? location ~ \.php$ {
? ? ? ? ? ? fastcgi_pass? 127.0.0.1:9000; #php-fpm監(jiān)聽的地址
? ? ? ? ? ? #fastcgi_index? index.php;
? ? ? ? ? ? #fastcgi_param? SCRIPT_FILENAME $document_root$fastcgi_script_name;
? ? ? ? ? ? #include? ? ? ? fastcgi_params;
? ? ? ? ? ? include? ? ? ? fastcgi.conf; #等價于上面兩條代碼
? ? ? ? }
? ? ? ? error_page? 500 502 503 504? /50x.html;
? ? ? ? location = /50x.html {
? ? ? ? ? ? root? html;
? ? ? ? }
? ? ? ? access_log? logs/ceshi-access.log? main; ?#訪問日志
? ? ? ? error_log? logs/ceshi-error.log? notice; ??#錯誤日志
? ? }
3.php-ci 框架網(wǎng)站的搭建
server {
? ? ? ? listen? ? ? 8003;
? ? ? ? root? ? /home/advert/;
? ? ? ? index? index.htm index.php ;
? ? ? ? location / {
? ? ? ? ? ? fastcgi_pass? 127.0.0.1:9000;
? ? ? ? ? ? fastcgi_param SCRIPT_FILENAME $document_root/index.php;
? ? ? ? ? ? fastcgi_param PATH_INFO $fastcgi_path_info;
? ? ? ? ? ? ##正則解析路徑? ? ?
? ? ? ? ? ? fastcgi_split_path_info ^(.+\.php)(.*)$;
? ? ? ? ? ? #fastcgi_param? SCRIPT_FILENAME $document_root$fastcgi_script_name;? ? ? ? ? ? ? ?
? ? ? ? ? ? #include? ? ? ? fastcgi_params;? ? ? ? ? ?
? ? ? ? ? ? include? ? ? ? fastcgi.conf; #等價于上面兩條代碼
? ? ? ? }
? ? ? ? error_log? logs/advert-error.log? notice;
? ? ? ? access_log? logs/advert-access.log? main;
? ? }
4.反向代理
server {
? ? ? ? listen? ? ? 8004;
? ? ? ? location /{
? ? ? ? ? ? ? ? proxy_pass? http://192.168.9.221:8001;? ? ? ? ?#反向代理的網(wǎng)址
? ? ? ? }
? ? ? ? error_log? logs/pass-error.log? notice;
? ? ? ? access_log? logs/pass-access.log? main;
? ? }
5.負載均衡
upstream ceshi {? ? ? ? ? #負載均衡的地址
? ? ? ? ? ? server 192.168.9.221:8001;
? ? ? ? ? ? server 192.168.9.221:8002;
server 192.168.9.221:8002 weight=1 max_fails=1 down;
? ? ? ? ? #weight權(quán)重? ? max_fail最大失敗次數(shù)? ? ?down 不參與負均衡? ?fail_timeout 失敗超時時間 Backup備份
? ? ? ? }
? ? server {
? ? ? ? listen? ? ? 8005;
? ? ? ? location / {
? ? ? ? ? ? ? #設(shè)置主機頭和客戶端真實地址术荤,以便服務(wù)器獲取客戶端真實IP
? ? ? ? ? ? ? ? proxy_set_header Host $host;
? ? ? ? ? ? ? ? proxy_set_header X-Real-IP $remote_addr;
? ? ? ? ? ? ? ? proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
? ? ? ? ? ? ? ? proxy_buffering off;? ? ? ? ? ? ? ? ? #禁用緩存
? ? ? ? ? ? ? ? proxy_pass http://ceshi; ? ?#負載均衡的名稱
? ? ? ? }
? ? ? ? error_page? 500 502 503 504? /50x.html;
? ? ? ? location = /50x.html {
? ? ? ? ? ? root? html;
? ? ? ? }
? ? error_log? logs/load-error.log? notice;? ? ? ?
access_log? logs/load-access.log? main;
? ? }
補充知識點:
A.nginx 的 upstream目前支持分配方式
1)厢拭、輪詢(默認)?
每個請求按時間順序逐一分配到不同的后端服務(wù)器,如果后端服務(wù)器down掉妓肢,能自動剔除严肪。
?2)键思、weight?
指定輪詢幾率,weight和訪問比率成正比阐枣,用于后端服務(wù)器性能不均的情況韧涨。
?3)、ip_hash?
每個請求按訪問ip的hash結(jié)果分配侮繁,這樣每個訪客固定訪問一個后端服務(wù)器虑粥,可以解決session的問題。 ?
4)宪哩、fair(第三方)?
按后端服務(wù)器的響應(yīng)時間來分配請求娩贷,響應(yīng)時間短的優(yōu)先分配。
5)锁孟、url_hash(第三方)
B.每個設(shè)備的狀態(tài)設(shè)置匯總:
1).down 表示單前的server暫時不參與負載?
2).weight 默認為1.weight越大彬祖,負載的權(quán)重就越大茁瘦。?
3).max_fails:允許請求失敗的次數(shù)默認為1.當超過最大次數(shù)時,返回proxy_next_upstream模塊定義的錯誤?
4).fail_timeout: max_fails次失敗后储笑,暫停的時間甜熔。?
5).backup: 其它所有的非backup機器down或者忙的時候,請求backup機器突倍。所以這臺機器壓力會最輕
6.單獨提出配置文件
在nginx.conf文件中
include /usr/local/nginx/conf/service.conf;
server.conf中指定server模塊的定義
問題匯總:
1)[emerg] unknown log format "main" in /usr/local/nginx/conf/nginx.conf:XX
解決方法:
打開nginx.conf腔稀,"main"錯誤是因為丟失了log_format選項,默認是被屏蔽掉了羽历,將屏蔽打開就好了
2)Nginx配置文件問題導(dǎo)致打不開網(wǎng)站unknown directive
解決方法:
注意符號兩面要有空格
3)[error] 1723#0: *10 connect() failed (111: Connection refused) while connecting to upstream, client: 192.168.9.11, server: , request: "GET / HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "192.168.9.11:8002"
造成原因: 9000端口沒有監(jiān)聽焊虏,php-fpm沒有啟動
解決方法:
A。ubuntu:? ?apt-get install php5-fpm? ? ?
service? ?php5-fpm start
B. 源碼安裝:在安裝php 的時候需要指定參數(shù)--enable-fpm(php未安裝的時候)
4.FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream
造成的原因:定義調(diào)用腳本文件路徑有問題
解決方法:
fastcgi_param SCRIPT_FILENAME 項目路徑$fastcgi_script_name;
?include? ? ? ? fastcgi_params;
5) FastCGI sent in stderr: "Access to the script '/home/advert' has been denied (see security.limit_extensions)"
解決方法:
a.修改php.ini配置文件中cgi.fix_pathinfo=1
b.FPM的security.limit_extension設(shè)置用于限制允許解析的主腳本的擴展名秕磷。它可以防止惡意代碼被執(zhí)行诵闭。默認值是簡單的.php可以配置/etc/php5/fpm/pool.d/www.conf
將/etc/php5/fpm/pool.d/www.conf文件中的security.limit_extension注釋打開
c.重新啟動php-fpm和nginx服務(wù),頁面能夠正常訪問