./configure的含義
在實踐安裝nginx的時候,不知道./configure是什么意思,這里特地記錄一下.
在linux中
./代表當前目錄,屬於相對路徑
../代表上一級目錄,屬於相對路徑
/代表根目錄,/開頭的文件都是絕對路徑
./configure的意思是執行當前目錄下面的configure文件
configure一般都有可執行的權限,如果沒有的話,用./configure是不能執行的,但是可以這樣執行:
sh ./configure
./代表當前目錄,屬於相對路徑
../代表上一級目錄,屬於相對路徑
/代表根目錄,/開頭的文件都是絕對路徑
./configure的意思是執行當前目錄下面的configure文件
configure一般都有可執行的權限,如果沒有的話,用./configure是不能執行的,但是可以這樣執行:
sh ./configure
使用--prefix參數指定nginx安裝的目錄
不指定prefix,則可執行文件默認放在/usr /local/bin,庫文件默認放在/usr/local/lib,配置文件默認放在/usr/local/etc。其它的資源文件放在/usr /local/share。你要卸載這個程序,要么在原來的make目錄下用一次make uninstall(前提是make文件指定過uninstall),要么去上述目錄里面把相關的文件一個個手工刪掉。
指定prefix,直接刪掉一個文件夾就夠了。
Nginx Location 指令基礎
Nginx 中的 Location 指令 是NginxHttpCoreModule中重要指令。Location 指令比較簡單,但卻是配置 Nginx 過程中不得不去了解的。
Location 指令,是用來為匹配的 URI 進行配置,URI 即語法中的”/uri/”,可以是字符串或正則表達式。但如果要使用正則表達式,則必須指定前綴。
一、基本語法
location [=|~|~*|^~|@] /uri/ { … }
〖=〗 表示精確匹配,如果找到,立即停止搜索並立即處理此請求。
〖~ 〗 表示區分大小寫匹配
〖~*〗 表示不區分大小寫匹配
〖^~ 〗 表示只匹配字符串,不查詢正則表達式。
〖@〗 指定一個命名的location,一般只用於內部重定向請求。
二、匹配過程
首先對字符串進行匹配查詢,最確切的匹配將被使用。然后,正則表達式的匹配查詢開始,匹配第一個結果后會停止搜索,如果沒有找到正則表達式,將使用字符串的搜索結果,如果字符串和正則都匹配,那么正則優先級較高。
三、配置實例
location = / {
# 只匹配對 / 目錄的查詢.
[ config A ]
}
location / {
# 匹配以 / 開始的查詢,即所有查詢都匹配。
[ config B ]
}
location ^~ /images/ {
# 匹配以 /images/ 開始的查詢,不再檢查正則表達式。
[ config C ]
}
location ~* \.(gif|jpg|jpeg)$ {
# 匹配以gif, jpg, or jpeg結尾的文件,但優先級低於config C。
[ config D ]
}
四、全局變量
$args #這個變量等於請求行中的參數。
$content_length #請求頭中的Content-length字段。
$content_type #請求頭中的Content-Type字段。
$document_root #當前請求在root指令中指定的值。
$host #請求主機頭字段,否則為服務器名稱。
$http_user_agent #客戶端agent信息
$http_cookie #客戶端cookie信息
$limit_rate #這個變量可以限制連接速率。
$request_body_file #客戶端請求主體信息的臨時文件名。
$request_method #客戶端請求的動作,通常為GET或POST。
$remote_addr #客戶端的IP地址。
$remote_port #客戶端的端口。
$remote_user #已經經過Auth Basic Module驗證的用戶名。
$request_filename #當前請求的文件路徑,由root或alias指令與URI請求生成。
$query_string #與$args相同。
$scheme #HTTP方法(如http,https)。
$server_protocol #請求使用的協議,通常是HTTP/1.0或HTTP/1.1。
$server_addr #服務器地址,在完成一次系統調用后可以確定這個值。
$server_name #服務器名稱。
$server_port #請求到達服務器的端口號。
$request_uri #包含請求參數的原始URI,不包含主機名,如:”/foo/bar.php?arg=baz”。
$uri #不帶請求參數的當前URI,$uri不包含主機名,如”/foo/bar.html”。
$document_uri #與$uri相同。
附錄1
$request_uri和$uri區別
$request_uri
This variable is equal to the *original* request URI as received from the client including the args. It cannot be modified. Look at $uri for the post-rewrite/altered URI. Does not include host name. Example: “/foo/bar.php?arg=baz”
這個變量等於從客戶端發送來的原生請求URI,包括參數。它不可以進行修改。$uri變量反映的是重寫后/改變的URI。不包括主機名。例如:”/foo/bar.php?arg=baz”
$uri
This variable is the current request URI, without any arguments (see $args for those). This variable will reflect any modifications done so far by internal redirects or the index module. Note this may be different from $request_uri, as $request_uri is what was originally sent by the browser before any such modifications. Does not include the protocol or host name. Example: /foo/bar.html
這個變量指當前的請求URI,不包括任何參數(見$args)。這個變量反映任何內部重定向或index模塊所做的修改。注意,這和$request_uri不同,因$request_uri是瀏覽器發起的不做任何修改的原生URI。不包括協議及主機名。例如:”/foo/bar.html”
$document_uri
The same as $uri.
同$uri.
附錄2
#允許客戶端請求的最大的單個文件字節數
client_max_body_size 10m;
#緩沖區代理緩沖用戶端請求的最大字節數 可以理解為先保存到本地再傳給用戶
client_body_buffer_size 128k;
#跟后端服務器連接的超時時間_發起握手等候響應超時時間
proxy_connect_timeout 600;
#連接成功后_等候后端服務器響應時間_其實已經進入后端的排隊等候處理
proxy_read_timeout 600;
#后端服務器數據回傳時間_就是在規定時間之內后端服務器必須傳完所有的數據
proxy_send_timeout 600;
#代理請求緩存區_這個緩存區間會保存用戶的頭信息以供Nginx進行規則處理_一般只要能保存下頭信息即可
proxy_buffer_size 8k;
#同上 告訴Nginx保存單個用的幾個Buffer 最大用多大空間
proxy_buffers 4 32k;
#如果系統很忙的時候可以申請更大的proxy_buffers 官方推薦*2
proxy_busy_buffers_size 64k;
#proxy緩存臨時文件的大小
proxy_temp_file_write_size 64k;
Nginx目錄訪問
Nginx默認是不允許列出整個目錄的。如需此功能,
打開nginx.conf文件,在location server 或 http段中加入
autoindex on;
另外兩個參數最好也加上去:
autoindex_exact_size off;
默認為on,顯示出文件的確切大小,單位是bytes。
改為off后,顯示出文件的大概大小,單位是kB或者MB或者GB
autoindex_localtime on;
默認為off,顯示的文件時間為GMT時間。
改為on后,顯示的文件時間為文件的服務器時間
location /images {
root /var/www/nginx-default/ibugaocn;
autoindex on;
}
隱藏nginx版本信息
server_tokens off;
