新聞中心
本篇內(nèi)容主要講解“Nginx常用的基礎(chǔ)配置方案”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“Nginx常用的基礎(chǔ)配置方案”吧! 本篇內(nèi)容主要講解“Nginx常用的基礎(chǔ)配置方案”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“Nginx常用的基礎(chǔ)配置方案”吧!
成都創(chuàng)新互聯(lián)主營大英網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,成都App制作,大英h5小程序設(shè)計(jì)搭建,大英網(wǎng)站營銷推廣歡迎大英等地區(qū)企業(yè)咨詢
Nginx的fastcgi模塊參數(shù)設(shè)置
Nginx 有兩個(gè)配置文件fastcgi_params、fastcgi.conf,兩者唯一的區(qū)別是,fastcgi.conf 多一個(gè)參數(shù) SCRIPT_FILENAME,diff顯示如下:$diff fastcgi fastcgi_params< fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;vim 進(jìn)入/usr/local/nginx/conf/fastcgi_params文件#請(qǐng)求的參數(shù);如?app=123fastcgi_paramfastcgi_param QUERY_STRING $query_string;##請(qǐng)求的動(dòng)作(GET,POST)fastcgi_param REQUEST_METHOD $request_method;#請(qǐng)求頭中的Content-Type字段fastcgi_param CONTENT_TYPE $content_type;#請(qǐng)求頭中的Content-length字段fastcgi_param CONTENT_LENGTH $content_length;#腳本名稱fastcgi_param SCRIPT_NAME $fastcgi_script_name;#請(qǐng)求的地址不帶參數(shù)fastcgi_param REQUEST_URI $request_uri;#與$uri相同fastcgi_param DOCUMENT_URI $document_uri;#網(wǎng)站的根目錄。在server配置中root指令中指定的值fastcgi_param DOCUMENT_ROOT $document_root;#請(qǐng)求使用的協(xié)議,通常是HTTP/1.0或HTTP/1.1fastcgi_param SERVER_PROTOCOL $server_protocol;#https 如果value非空才進(jìn)行設(shè)置fastcgi_param HTTPS $https if_not_empty;#cgi 版本fastcgi_param GATEWAY_INTERFACE CGI/1.1;#nginx 版本號(hào),可修改、隱藏fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;#客戶端IPfastcgi_param REMOTE_ADDR $remote_addr;#客戶端端口fastcgi_param REMOTE_PORT $remote_port;#IP地址fastcgi_param SERVER_ADDR $server_addr;#服務(wù)器端口fastcgi_param SERVER_PORT $server_port;#服務(wù)器名,域名在server配置中指定的server_namefastcgi_param SERVER_NAME $server_name;可自定義變量fastcgi_param PATH_INFO $path_info;#在尾部另起一行追加即可保存跟fastcgi.conf 一致fastcgi_param REDIRECT_STATUS 200;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;在php可打印出上面的服務(wù)環(huán)境變量如:echo $_SERVER[‘REMOTE_ADDR’]
Nginx的常用指令解釋fastcgi_pass這個(gè)命令是指定將http代理到哪個(gè)fastcgi服務(wù)端接口。fastcgi_pass后面是填寫fastcgi服務(wù)端地址的,這個(gè)地址可以是域地址,也可以是Uninx-域套接字, 另外也可以是upstream中設(shè)置的反向代理。fastcgi_pass localhost:9000; #默認(rèn)PHP起在9000端口fastcgi_pass unix:/tmp/fastcgi.socket;fastcgi_pass upstream_php5; #這里指定的反向代理可以在nginx.conf中upstream中設(shè)置fastcgi_param這個(gè)命令是設(shè)置fastcgi請(qǐng)求中的參數(shù),默認(rèn)參數(shù)在上面提到的fastcgi模塊參數(shù)文件中,具體設(shè)置的東西可以在$_SERVER中獲取到。比如你想要設(shè)置當(dāng)前的機(jī)器環(huán)境,可以使用fastcgi_param ENV test;來設(shè)置。對(duì)于php來說,最少需要設(shè)置的變量有:fastcgi_param SCRIPT_FILENAME /home/www/scripts/php$fastcgi_script_name;fastcgi_param QUERY_STRING $query_string;fastcgi_index這個(gè)命令設(shè)置了fastcgi默認(rèn)使用的腳本。就是當(dāng)SCRIPT_FILENAME沒有命中腳本的時(shí)候,使用的就是fastcgi_index設(shè)置的腳本。fastcgi_index index.php;
以上三個(gè)命令能組成最基本的fastcgi設(shè)置了:location / {fastcgi_pass localhost:9000;fastcgi_index index.php;#下面這一個(gè)可以直接在fastcgi_param配置文件中指定fastcgi_param SCRIPT_FILENAME /home/www/scripts/php$fastcgi_script_name;fastcgi_param QUERY_STRING $query_string;fastcgi_param REQUEST_METHOD $request_method;fastcgi_param CONTENT_TYPE $content_type;fastcgi_param CONTENT_LENGTH $content_length;}
圖片(或者靜態(tài)文件)服務(wù)器配置server {listen 80;server_name images.xxx.com img.movie.xxx.com;root /data/vhosts/xxx.com/images/public_html/;index index.shtml index.html index.htm;#如果是js、css、json文件可以指定壓縮來減少傳輸文件大小gzip_types text/plain application/x-javascript text/css application/xml text/xml application/json;}
基礎(chǔ)服務(wù)器server {listen 80;server_name www.xxx.com;root /data/vhosts/xxxx.com/public_html/;index index.htm index.php index.html index.shtml;location / {ssi on;ssi_silent_errors on;ssi_types text/shtml;include other.conf; #這里可以配置其他的公共配置,或者重寫規(guī)則}location ~\.php$ {expires off;include fastcgi_params; #fastcgi 指定的參數(shù)配置fastcgi_pass 127.0.0.1:9000; #這里同上也可指定代理或socketfastcgi_index index.php;fastcgi_connect_timeout 300;fastcgi_send_timeout 300;fastcgi_read_timeout 300;}
配置ssi_inclue訪問的目錄不存在是指定的目錄location ~ /ssi_include/ {if (!-e $request_filename) {rewrite ^(.*)$ /blank.html last;}}
配置靜態(tài)文件默認(rèn)的錯(cuò)誤頁面location ~(\.html|\.htm|\.shtml)$ {error_page 404 500 502 503 504 /404.html;}}
Auth權(quán)限設(shè)置
step 1. 在根域名下面需要配置權(quán)限的目錄設(shè)置locationlocation /phpMyAdmin/ {allow 192.168.0.1;allow xx.xx.xxx.xxx;allow xx.xx.xxx.xxx;deny all;auth_basic "Restricted";auth_basic_user_file /usr/local/nginx/conf/auth_phpmyadmin.pass;}
step2. 在 auth_basic_user_file 指定的文件下面增加賬號(hào)密碼,一行一個(gè)username1:password1username2:password2username3:password3username4:password4
Nginx反向代理
第一種反向代理:location / {proxy_pass http://192.168.1.4:8099/;#若針對(duì)不同的目錄進(jìn)行代理把下面的配置放到根目錄代理的上面#proxy_pass http://192.168.1.4:8099/linuxtone/;proxy_redirect default ;}
第二種反向代理:upstream配置upstream xx.xxx.com {server 192.168.1.4:8099;}
站點(diǎn)配置文件server{listen 80;server_name bbs.linuxtone.conf;index index.html index.htm;root /date/vhosts/xxx.com/;location ~ ^/NginxStatus/ {stub_status on;access_log off;}location / {proxy_redirect off ;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header REMOTE-HOST $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;client_max_body_size 50m; #緩沖區(qū)代理緩沖用戶端請(qǐng)求的最大字節(jié)數(shù),可以理解為保存到本地再傳給用戶client_body_buffer_size 256k;proxy_connect_timeout 30; #nginx跟后端服務(wù)器連接超時(shí)時(shí)間(代理連接超時(shí))proxy_send_timeout 30;proxy_read_timeout 60; #連接成功后,后端服務(wù)器響應(yīng)時(shí)間(代理接收超時(shí))proxy_buffer_size 256k; #設(shè)置代理服務(wù)器(nginx)保存用戶頭信息的緩沖區(qū)大小proxy_buffers 4 256k; #proxy_buffers緩沖區(qū),網(wǎng)頁平均在256k以下的話,這樣設(shè)置proxy_busy_buffers_size 256k;proxy_temp_file_write_size 256k;proxy_next_upstream error timeout invalid_header http_500 http_503 http_404;proxy_max_temp_file_size 128m;proxy_ignore_client_abort on; #不允許代理端主動(dòng)關(guān)閉連接#http://xx.xxx.com 指上面upstream塊的名稱proxy_pass http://xx.xxx.com;}
Apache反向代理
#設(shè)置該域名轉(zhuǎn)發(fā)給8080端口ServerAdmin webmaster@dummy-host2.example.comServerName www.xxx.comProxyRequests offOrder deny,allowAllow from allProxyPass / http://www.xxx.com:8080/ProxyPassReverse / http://www.xxx.com:8080/
ProxyPassReverse一般和ProxyPass指令配合使用,此指令使Apache調(diào)整HTTP重定向應(yīng)答中Location, Content-Location, URI頭里的URL,這樣可以避免在Apache作為反向代理使用時(shí),。后端服務(wù)器的HTTP重定向造成的繞過反向代理的問題
禁止蜘蛛訪問
#判斷UA,如果UA不包含spider或者bot(不區(qū)分大小寫),表示UA為正常用戶
#設(shè)置變量is_human值為yesif ($http_user_agent !~* "spider|bot") {set $is_human 'yes';}
#當(dāng)有任意請(qǐng)求的時(shí)候,該UA不是正常用戶,則表示應(yīng)該是蜘蛛類程序,則返回403location / {if ($is_human != 'yes') {return 403;}}
#當(dāng)有任意請(qǐng)求的時(shí)候location / {#當(dāng)訪問者UA包含有spider或則bot的時(shí)候(不區(qū)分大小寫),說明是蜘蛛類來訪if ($http_user_agent ~* "spider|bot") {# 直接就屏蔽蜘蛛的整站訪問return 403;}}
給系統(tǒng)添加了robots.txt文件:
User-agent: *Disallow: /
網(wǎng)站名稱:Nginx常用的基礎(chǔ)配置方案
轉(zhuǎn)載來于:http://ef60e0e.cn/article/sjggps.html