大神教你Nginx常用基礎配置方案
Nginx的fastcgi模組引數設定
Nginx 有兩個配置檔案fastcgi_params、fastcgi.conf,兩者唯一的區別是,fastcgi.conf 多一個引數 SCRIPT_FILENAME,diff顯示如下:
$diff fastcgi fastcgi_params < fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; vim 進入/usr/local/nginx/conf/fastcgi_params檔案 #請求的引數;如?app=123fastcgi_param fastcgi_param QUERY_STRING $query_string; ##請求的動作(GET,POST) fastcgi_param REQUEST_METHOD $request_method; #請求頭中的Content-Type欄位 fastcgi_param CONTENT_TYPE $content_type; #請求頭中的Content-length欄位 fastcgi_param CONTENT_LENGTH $content_length; #指令碼名稱 fastcgi_param SCRIPT_NAME $fastcgi_script_name; #請求的地址不帶引數 fastcgi_param REQUEST_URI $request_uri; #與$uri相同 fastcgi_param DOCUMENT_URI $document_uri; #網站的根目錄。在server配置中root指令中指定的值 fastcgi_param DOCUMENT_ROOT $document_root; #請求使用的協議,通常是HTTP/1.0或HTTP/1.1 fastcgi_param SERVER_PROTOCOL $server_protocol; #https 如果value非空才進行設定 fastcgi_param HTTPS $https if_not_empty; #cgi 版本 fastcgi_param GATEWAY_INTERFACE CGI/1.1; #nginx 版本號,可修改、隱藏 fastcgi_param SERVER_SOFTWARE nginx/$nginx_version; #客戶端IP fastcgi_param REMOTE_ADDR $remote_addr; #客戶端埠 fastcgi_param REMOTE_PORT $remote_port; #伺服器IP地址 fastcgi_param SERVER_ADDR $server_addr; #伺服器埠 fastcgi_param SERVER_PORT $server_port; #伺服器名,域名在server配置中指定的server_name fastcgi_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可列印出上面的服務環境變數 如:echo $_SERVER[‘REMOTE_ADDR’]
Nginx的常用指令解釋
fastcgi_pass 這個命令是指定將http代理到哪個fastcgi服務端介面。fastcgi_pass後面是填寫fastcgi服務端地址的,這個地址可以是域地址,也可以是Uninx-域套接字, 另外也可以是upstream中設定的反向代理。 fastcgi_pass localhost:9000; #預設PHP起在9000埠 fastcgi_pass unix:/tmp/fastcgi.socket; fastcgi_pass upstream_php5; #這裡指定的反向代理可以在nginx.conf中upstream中設定 fastcgi_param 這個命令是設定fastcgi請求中的引數,預設引數在上面提到的fastcgi模組引數檔案中,具體設定的東西可以在$_SERVER中獲取到。 比如你想要設定當前的機器環境,可以使用fastcgi_param ENV test;來設定。 對於php來說,最少需要設定的變數有: fastcgi_param SCRIPT_FILENAME /home/www/scripts/php$fastcgi_script_name; fastcgi_param QUERY_STRING $query_string; fastcgi_index 這個命令設定了fastcgi預設使用的指令碼。就是當SCRIPT_FILENAME沒有命中指令碼的時候,使用的就是fastcgi_index設定的指令碼。 fastcgi_index index.php;
以上三個命令能組成最基本的fastcgi設定了:
location / { fastcgi_pass localhost:9000; fastcgi_index index.php; #下面這一個可以直接在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; }
圖片(或者靜態檔案)伺服器配置
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; }
基礎伺服器
server { listen 80; server_name 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; #這裡可以配置其他的公共配置,或者重寫規則 } location ~\.php$ { expires off; include fastcgi_params; #fastcgi 指定的引數配置 fastcgi_pass 127.0.0.1:9000; #這裡同上也可指定代理或socket fastcgi_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; } }
配置靜態檔案預設的錯誤頁面
location ~(\.html|\.htm|\.shtml)$ { error_page 404 500 502 503 504 /404.html; } }
Auth許可權設定
step 1. 在根域名下面需要配置許可權的目錄設定location
location /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 指定的檔案下面增加賬號密碼,一行一個
username1:password1 username2:password2 username3:password3 username4:password4
Nginx反向代理
第一種反向代理:
location / { proxy_pass http://192.168.1.4:8099/; #若針對不同的目錄進行代理把下面的配置放到根目錄代理的上面 #proxy_pass http://192.168.1.4:8099/linuxtone/; proxy_redirect default ; }
第二種反向代理:
upstream配置 upstream xx.xxx.com { server 192.168.1.4:8099; }
站點配置檔案
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; #緩衝區代理緩衝使用者端請求的最大位元組數,可以理解為儲存到本地再傳給使用者 client_body_buffer_size 256k; proxy_connect_timeout 30; #nginx跟後端伺服器連線超時時間(代理連線超時) proxy_send_timeout 30; proxy_read_timeout 60; #連線成功後,後端伺服器響應時間(代理接收超時) proxy_buffer_size 256k; #設定代理伺服器(nginx)儲存使用者頭資訊的緩衝區大小 proxy_buffers 4 256k; #proxy_buffers緩衝區,網頁平均在256k以下的話,這樣設定 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; #不允許代理端主動關閉連線 #指上面upstream塊的名稱 proxy_pass }
Apache反向代理
#設定該域名轉發給8080埠
ServerAdmin webmaster@dummy-host2.example.com ServerName ProxyRequests off Order deny,allow Allow from all ProxyPass / http://:8080/ ProxyPassReverse / http://:8080/
ProxyPassReverse一般和ProxyPass指令配合使用,此指令使Apache調整HTTP重定向應答中Location, Content-Location, URI頭裡的URL,這樣可以避免在Apache作為反向代理使用時,。後端伺服器的HTTP重定向造成的繞過反向代理的問題
禁止蜘蛛訪問
#判斷UA,如果UA不包含spider或者bot(不區分大小寫),表示UA為正常使用者
#設定變數is_human值為yes
if ($http_user_agent !~* "spider|bot") { set $is_human 'yes'; }
#當有任意請求的時候,該UA不是正常使用者,則表示應該是蜘蛛類程式,則返回403
location / { if ($is_human != 'yes') { return 403; } }
#當有任意請求的時候
location / { #當訪問者UA包含有spider或則bot的時候(不區分大小寫),說明是蜘蛛類來訪 if ($http_user_agent ~* "spider|bot") { # 直接就遮蔽蜘蛛的整站訪問 return 403; } }
給系統新增了robots.txt檔案:
User-agent: * Disallow: /
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31559985/viewspace-2638725/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- nginx常用配置Nginx
- nginx常用配置教程。Nginx
- nginx host常用配置Nginx
- 小白入門使用Nginx基礎的常用操作Nginx
- nginx 常用配置記錄Nginx
- nginx 常用配置案例(三)Nginx
- nginx基礎Nginx
- Nginx基礎02:配置檔案nginx.conf(Part1)Nginx
- SSL基礎知識及Nginx/Tomcat配置SSLNginxTomcat
- 滲透測試基礎知識---nginx安全配置Nginx
- [Webpack] 核心概念、基礎配置、常用loader和常用外掛Web
- Nginx-基礎Nginx
- Nginx基礎筆記Nginx筆記
- Nginx 基礎入門Nginx
- Nginx-基礎篇Nginx
- 002 Nginx 基礎Nginx
- Nginx基礎知識Nginx
- Java-Nginx基礎JavaNginx
- 手把手教你HDFS基礎配置安裝及命令使用!
- Nginx的幾個常用配置和技巧Nginx
- Nginx常用配置引數的含義Nginx
- 2017年——阿里10年JAVA大神教你如果從0基礎到月薪過萬(必看)阿里Java
- ASM常用基礎管理命令[ASM基礎]ASM
- nginx 基礎命令筆記Nginx筆記
- 常用ubuntu基礎命令Ubuntu
- Solon2 之基礎:一、常用應用配置說明
- webpack基礎配置Web
- babel基礎配置Babel
- Maven基礎配置Maven
- nginx應用總結(1)-- 基礎知識和應用配置梳理Nginx
- Nginx--面試基礎必會Nginx面試
- 最基礎的Nginx教學Nginx
- Nginx 基礎理解和安裝Nginx
- Nginx深入瞭解-基礎(一)Nginx
- Nginx深入瞭解-基礎(三)Nginx
- nginx的基礎應用(續)Nginx
- nginx 入門之理論基礎(-)Nginx
- 『動善時』JMeter基礎 — 7、jmeter.properties檔案常用配置JMeter