Nginx環境搭建以及一些基本配置
阿新 • • 發佈:2018-12-12
Nginx環境搭建
listen 8889; 監聽埠,如果配置多個server的時候,埠需要配置不一樣 server_name 192.168.0.52; # Nginx中的server_name指令主要用於配置基於名稱的虛擬主機,server_name指令在接到請求後的匹配順序 #配置啟動程序(和CPU總核數一致) worker_processes 1; #charset koi8-r; #一個nginx程序開啟的最多檔案描述數目,理論值應該是最多開啟檔案數(系統的值ulimit -u)建議與ulimit -u的值一致 worker_rlimit_nofile 65535; #access_log logs/host.access.log main;
Linux 檢視CPU總核數
# 總核數 = 物理CPU個數 X 每顆物理CPU的核數
# 總邏輯CPU數 = 物理CPU個數 X 每顆物理CPU的核數 X 超執行緒數
# 檢視物理CPU個數
cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l
# 檢視每個物理CPU中core的個數(即核數)
cat /proc/cpuinfo| grep "cpu cores"| uniq
# 檢視邏輯CPU的個數
cat /proc/cpuinfo| grep "processor"| wc -l
Nginx 安裝
編譯
./configure --prefix=/usr/local/nginx --sbin-path=/usr/local/nginx/sbin/nginx --conf-path=/usr/local/nginx/conf/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx/nginx.pid --lock-path=/var/lock/nginx.lock --user=nginx --group=nginx --with-http_stub_status_module --with-http_gzip_static_module --http-client-body-temp-path=/var/tmp/nginx/client/ --http-proxy-temp-path=/var/tmp/nginx/proxy/ --http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ --http-uwsgi-temp-path=/var/tmp/nginx/uwsgi --http-scgi-temp-path=/var/tmp/nginx/scgi --with-pcre
Fastdfs模組新增編譯
./configure --prefix=/usr/local/nginx --add-module=../fastdfs-nginx-module/src/ --sbin-path=/usr/local/nginx/sbin/nginx --conf-path=/usr/local/nginx/conf/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx/nginx.pid --lock-path=/var/lock/nginx.lock --user=nginx --group=nginx --with-http_stub_status_module --with-http_gzip_static_module --http-client-body-temp-path=/var/tmp/nginx/client/ --http-proxy-temp-path=/var/tmp/nginx/proxy/ --http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ --http-uwsgi-temp-path=/var/tmp/nginx/uwsgi --http-scgi-temp-path=/var/tmp/nginx/scgi --with-pcre
http 服務配置
NGNIX開啟壓縮:
gzip on;
gzip_buffers 4 8k;
#壓縮級別
gzip_comp_level 2;
#超過20壓縮
gzip_min_length 20;
gzip_proxied off;
gzip_types text/css;
gzip_vary off;
location / { 匹配路徑
root html; 匹配當前路徑的時候,會到這個html的資料夾下匹配
index index.html index.htm; 當沒有指定主頁的時候,預設選擇這個指定的檔案
proxy_pass http://192.168.0.52:35840 代理路徑,相當於轉發
}
#error_page 404 /404.html; 出錯的時候,跳轉的頁面
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
Nginx Server 配置
server {
listen 80;
server_name ethio-play.com;
# 永久重定向配置 301
rewrite ^(.*) http://www.ethio-play.com$1 permanent;
}
nginx自動匹配多級域名配置
server {
listen 80;
server_name ~^(?<subdomain>\w+)\.yourdomain\.com$;
root html/$subdomain;
index index.html index.htm index.php;
fastcgi_intercept_errors on;
error_page 404 = /404.html;
location / {
# This is cool because no php is touched for static content.
# include the "?$args" part so non-default permalinks doesn't
# break when using query string
try_files $uri $uri/ =404;
}
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param domain $subdomain;
include fastcgi_params;
}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
location ~ /\.ht {
deny all;
}
}
配置反向代理
location ~ \.jsp$ { 配置JSP頁面又tomcat處理
proxy_pass http://localhost:8080;
}
location ~ \.(html|js|css|png|gif)$ { 配置一些靜態資源有nginx處理
root D:/software/developerTools/server/apache-tomcat-7.0.8/webapps/ROOT;
}
配置多個靜態私服
* server外添加了一個upstream,而直接在proxy_pass裡面直接用http://+upstream的名稱來使用, upstream中的server元素必須要注意,不能加http://,但proxy_pass中必須加
upstream local_tomcat {
server localhost:8080 weight=1; 配置多個私服,weight值越大請求得到的機會越大
server localhost:9999 weight=5; 配置多個私服,weight值越大請求得到的機會越大
}
server{
location / {
proxy_pass http://local_tomcat;
}
#......其他省略
}
nginx正則表示式:
eg:
語法:location [=|~|~*|^~] /uri/ { … }
注意:
~* 字首選擇不區分大小寫的匹配
~ 選擇區分大小寫的匹配
例子:
location = / {
# 只匹配 / 查詢。
[ configuration A ]
}
location / {
# 匹配任何查詢,因為所有請求都已 / 開頭。但是正則表示式規則和長的塊規則將被優先和查詢匹配。
[ configuration B ]
}
location ^~ /images/ {
# 匹配任何已 /images/ 開頭的任何查詢並且停止搜尋。任何正則表示式將不會被測試。
[ configuration C ]
}
location ~* \.(gif|jpg|jpeg)$ {
# 匹配任何已 gif、jpg 或 jpeg 結尾的請求。然而所有 /images/ 目錄的請求將使用 Configuration C。
[ configuration D ]
}
Nginx正則表示式location匹配:
location ^~ /business/
{
#root
alias D:\\apidoc\\portal\\business\\apidocs\\;
#expires定義使用者瀏覽器快取的時間為7天,如果靜態頁面不常更新,可以設定更長,這樣可以節省頻寬和緩解伺服器的壓力
#expires 7d;
}
root 和 alias區別:
eg:http://localhost:8079/business/index.html
alias也是用來設定檔案資源路徑的,他與root不同點就是在於如何解讀跟location後面的URL引數
1.使用alias的時候,他會將URL中的business部分丟掉,請求路徑會變為D:\\apidoc\\portal\\business\\apidocs\\index.html
2.使用root的時候,business不會丟棄掉,他會使用完整的url來匹配,請求路徑會變為D:\\apidoc\\portal\\business\\apidocs\\business/index.html
Nginx 正則規則表示式
~ 為區分大小寫的匹配。
~* 不區分大小寫的匹配(匹配firefox的正則同時匹配FireFox)。
!~ 不匹配的
!~* 不匹配的
. 匹配除換行符以外的任意字元
\w 匹配字母或數字或下劃線或漢字
\s 匹配任意的空白符
\d 匹配數字
\b 匹配單詞的開始或結束
^ 匹配字串的開始
$ 匹配字串的結束
* 重複零次或更多次
+ 重複一次或更多次
? 重複零次或一次
{n} 重複n次
{n,} 重複n次或更多次
{n,m} 重複n到m次
*? 重複任意次,但儘可能少重複
+? 重複1次或更多次,但儘可能少重複
?? 重複0次或1次,但儘可能少重複
{n,m}? 重複n到m次,但儘可能少重複
{n,}? 重複n次以上,但儘可能少重複
\W 匹配任意不是字母,數字,下劃線,漢字的字元
\S 匹配任意不是空白符的字元
\D 匹配任意非數字的字元
\B 匹配不是單詞開頭或結束的位置
[^x] 匹配除了x以外的任意字元
[^aeiou] 匹配除了aeiou這幾個字母以外的任意字元
捕獲 (exp) 匹配exp,並捕獲文字到自動命名的組裡
(?<name>exp) 匹配exp,並捕獲文字到名稱為name的組裡,也可以寫成(?'name'exp)
(?:exp) 匹配exp,不捕獲匹配的文字,也不給此分組分配組號
零寬斷言 (?=exp) 匹配exp前面的位置
(?<=exp) 匹配exp後面的位置
(?!exp) 匹配後面跟的不是exp的位置
(?<!exp) 匹配前面不是exp的位置
Nginx命令:
cd nginx安裝目錄:
#執行 start nginx
#重啟 nginx -s reload
#檢視配置是否生效 nginx -t
#關閉服務 nginx -s stop