真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Nginx服務(wù)器搭建和基本配置實(shí)例分析

今天小編給大家分享一下Nginx服務(wù)器搭建和基本配置實(shí)例分析的相關(guān)知識(shí)點(diǎn),內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識(shí),所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

成都地區(qū)優(yōu)秀IDC服務(wù)器托管提供商(創(chuàng)新互聯(lián)公司).為客戶提供專業(yè)的綿陽電信機(jī)房機(jī)柜租用,四川各地服務(wù)器托管,綿陽電信機(jī)房機(jī)柜租用、多線服務(wù)器托管.托管咨詢專線:028-86922220

nginx(engine x) 是一個(gè)高性能的 http 服務(wù)器和反向代理服務(wù)器,這款軟件開發(fā)的目的是為了解決 c10k 問題。

nginx 的架構(gòu)利用了許多現(xiàn)代操作系統(tǒng)的特性,以實(shí)現(xiàn)一個(gè)高性能的 http 服務(wù)器。例如在 linux 系統(tǒng)上,nginx 使用了 epoll,sendfile,file aio,directio 等機(jī)制,使得 nginx 不僅性能高效,而且資源占用率非常低,官方宣稱 nginx 維持 10000 個(gè)非活動(dòng)的 http keep-alive 連接僅需要 2.5m 內(nèi)存。
Nginx服務(wù)器搭建和基本配置實(shí)例分析
nginx會(huì)按需同時(shí)運(yùn)行多個(gè)進(jìn)程:一個(gè)主進(jìn)程(master)和幾個(gè)工作進(jìn)程(worker),配置了緩存時(shí)還會(huì)有緩存加載器進(jìn)程(cache loader)和緩存管理器進(jìn)程(cache manager)等。所有進(jìn)程均是僅含有一個(gè)線程,并主要通過“共享內(nèi)存”的機(jī)制實(shí)現(xiàn)進(jìn)程間通信。主進(jìn)程以 root 用戶身份運(yùn)行,而worker、cache loader 和 cache manager 均應(yīng)以非特權(quán)用戶身份運(yùn)行。

1. 安裝 nginx
在 centos6 版本的 epel 源中,已經(jīng)加入了 nginx 的 rpm 包,不過此 rpm 包版本較低。如果需要更新版本,可以使用官方制作的 rpm 包,或者使用源碼包編譯安裝。

還可以使用一些二次開發(fā)功能增強(qiáng)的 nginx 版本,例如淘寶的 tengine 和 openresty 都是不錯(cuò)的選擇。

1.1 常用編譯參數(shù)

--prefix=path:指定 nginx 的安裝目錄
--conf-path=path:指定 nginx.conf 配置文件路徑
--user=name:nginx 工作進(jìn)程的用戶
--with-pcre:開啟 pcre 正則表達(dá)式的支持
--with-http_ssl_module:?jiǎn)?dòng) ssl 的支持
--with-http_stub_status_module:用于監(jiān)控 nginx 的狀態(tài)
--with-http-realip_module:允許改變客戶端請(qǐng)求頭中客戶端 ip 地址
--with-file-aio:?jiǎn)⒂?file aio
--add-module=path:添加第三方外部模塊
這里提供一個(gè)完整的編譯方案:

--prefix=/usr/local/nginx \
--conf-path=/etc/nginx/nginx.conf \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--http-client-body-temp-path=/var/tmp/nginx/client_body \
--http-proxy-temp-path=/var/tmp/nginx/proxy \
--http-fastcgi-temp-path=/var/tmp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/tmp/nginx/uwsgi \
--pid-path=/var/run/nginx.pid \
--lock-path=/var/lock/nginx \
--user=nginx \
--group=nginx \
--with-file-aio \
--with-http_ssl_module \
--with-http_realip_module \
--with-http_sub_module \
--with-http_gzip_static_module \
--with-http_stub_status_module \
--with-pcre
1.2 nginx 的啟動(dòng)和關(guān)閉

啟動(dòng) nginx:

# nginx -c /etc/nginx/nginx.conf


關(guān)閉 nginx

# nginx -s stop


重讀配置文件

# nginx -s reload
# pkill -hup nginx


重新打開日志文件

# nginx -s reopen
# pkill -usr1 nginx


還可以下載 nginx rpm 包中的 /etc/init.d/nginx 文件,修改路徑后即可使用:

# service nginx {start|stop|status|restart|reload|configtest|}


2. nginx.conf 配置文件

nginx 配置文件主要分成四部分:main(全局設(shè)置)、http(http 的通用設(shè)置)、server(虛擬主機(jī)設(shè)置)、location(匹配 url 路徑)。還有一些其他的配置段,如 event,upstream 等。

2.1 通用設(shè)置

user nginx
指定運(yùn)行 nginx workre 進(jìn)程的用戶和組

worker_rlimit_nofile #
指定所有 worker 進(jìn)程能夠打開的最大文件數(shù)

worker_cpu_affinity
設(shè)置 worker 進(jìn)程的 cpu 粘性,以避免進(jìn)程在 cpu 間切換帶來的性能消耗。如 worker_cpu_affinity 0001 0010 0100 1000;(四核)

worker_processes 4
worker 工作進(jìn)程的個(gè)數(shù),這個(gè)值可以設(shè)置為與 cpu 數(shù)量相同,如果開啟了 ssl 和 gzip,那么可以適當(dāng)增加此數(shù)值

worker_connections 1000
單個(gè) worker 進(jìn)程能接受的最大并發(fā)連接數(shù),放在 event 段中

error_log logs/error.log info
錯(cuò)誤日志的存放路徑和記錄級(jí)別

use epoll
使用 epoll 事件模型,放在 event 段中

2.2 http 服務(wù)器

server {}:
定義一個(gè)虛擬主機(jī)

listen 80;
定義監(jiān)聽的地址和端口,默認(rèn)監(jiān)聽在本機(jī)所有地址上

server_name name [...];
定義虛擬主機(jī)名,可以使用多個(gè)名稱,還可以使用正則表達(dá)式或通配符。

sendfile on
開啟 sendfile 調(diào)用來快速的響應(yīng)客戶端

keepalive_timeout 65
長(zhǎng)連接超時(shí)時(shí)間,單位是秒。

send_timeout
指定響應(yīng)客戶端的超時(shí)時(shí)間

client_max_body_size 10m
允許客戶端請(qǐng)求的實(shí)體最大大小

root path
設(shè)置請(qǐng)求 url 所對(duì)應(yīng)資源所在文件系統(tǒng)上的根目錄

location [ = | ~ | ~* | ^~ ] uri { ... }
設(shè)置一個(gè) uri 匹配路徑
=:精確匹配
~:正則表達(dá)式匹配,區(qū)分字符大小寫
~*:正則表達(dá)式匹配,不區(qū)分字符大小寫
^~:uri 的前半部分匹配,且不實(shí)用正則表達(dá)式
優(yōu)先級(jí):
= > location 完整路徑 > ^~ > ~ > ~* > location 起始路徑 > location /

allow 和 deny
基于 ip 訪問控制,如:

僅允許 192.168.0.0/24 網(wǎng)段客戶端訪問

allow 192.168.0.0/24;
deny all;
stub_status on
開啟狀態(tài)顯式,僅能用于 location 中:
開啟狀態(tài)顯式頁面

location /status {
stub_status on;
allow 172.16.0.0/16;
deny all;
}


rewrite
url 重寫,可以使用多種標(biāo)記
例如:

rewrite ^/images/(.*\.jpg)$ /imgs/$1 break;
可用的 flag:
- last:重寫完成后,繼續(xù)匹配其他 rewrite 規(guī)則
- break:重寫完成后不再繼續(xù)匹配
- redirect:返回 302 重定向(臨時(shí)重定向),客戶端對(duì)重定向的 url 發(fā)起新的請(qǐng)求
- permanent:返回 301 重定向(永久重定向),客戶端對(duì)重定向的 url 發(fā)起新的請(qǐng)求

一個(gè) server 配置示例:

server {
 listen  80;
 server_name www.example.com;
 root /web/htdocs;

 location / {
  index index.html index.htm;
 }

 location /status {
  stub_status on;
  allow 10.0.0.0/8;
  deny all;
  access_log off;
}

2.3 ssl 的配置

啟用一個(gè) ssl 虛擬主機(jī)

server {
  listen 443;
  server_name example.com;

  root /apps/www;
  index index.html index.htm;

  ssl on;
  ssl_certificate /etc/nginx/ssl/nginx.crt;
  ssl_certificate_key /etc/nginx/ssl/nginx.key;

#  ssl_protocols sslv3 tlsv1 tlsv1.1 tlsv1.2;
#  ssl_ciphers all:!adh:!export56:rc4+rsa:+high:+medium:+low:+sslv2:+exp;
#  ssl_prefer_server_ciphers on;

}

其中 ssl_certificate 表示 ca 文件,ssl_certificate_key 表示密鑰文件。

如果想把 http 請(qǐng)求強(qiáng)制轉(zhuǎn)到 https,可以這樣:

server {
listen  80;
server_name example.me;

return 301 https://$server_name$request_uri;
}


2.4 nginx 做負(fù)載均衡反向代理

nginx 做反向代理時(shí),后端主機(jī)有多臺(tái),可以使用 upstream 定義一個(gè)后端主機(jī)池,在反向代理時(shí)直接使用主機(jī)池的名字。在 upstream 中可以定義負(fù)載均衡調(diào)度算法,權(quán)重,健康狀態(tài)檢測(cè)等參數(shù)。

例如:

upstream backend {
 server 172.16.0.1:80 weight=1 max-fails=3 fail_timeout=10;
 server 172.16.0.2:80 weight=1max-fails=3 fail_timeout=10;;
}


默認(rèn)請(qǐng)求下,使用 round-robin 調(diào)度算法,并有健康狀態(tài)檢查和恢復(fù)主機(jī)的能力。

ningx 還可以使用這些算法:

ip_hash:基于源地址哈希,主要目的是會(huì)話保持
least_conn:基于最少活動(dòng)連接進(jìn)行調(diào)度
sticky:基于 cookie 進(jìn)行會(huì)話綁定,nginx 會(huì)在客戶端第一次訪問時(shí)插入路由信息到 cookie 中,或者選擇 cookie 中的某個(gè)字段的值作為鍵,以后每次請(qǐng)求將基于此信息進(jìn)行調(diào)度
基于 cookie 的會(huì)話綁定共有 cookie,route 和 learn 三種。

例如,基于 cookie name 的調(diào)度:

upstream backend {
 server backend1.example.com;
 server backend2.example.com;

 sticky cookie srv_id expires=1h domain=.example.com path=/;
}


使用此主機(jī)組進(jìn)行反向代理:

location / {
 proxy_pass http://backend;
 proxy_set_header host $host;
 proxy_set_haeder x-forwared-for $proxy_add_x_forwarded_for;
}


proxy_pass url 指定代理的后端主機(jī),可以指定 "http" 或 "https" 協(xié)議,域名可以是 ip 地址,也可以是 upstream 池名字

如果代理指定的是一個(gè) uri 地址,如 http://127.0.0.1/remote,那么將直接被代理至指定 uri,無論請(qǐng)求的 uri 是什么
如果代理指定的一個(gè)主機(jī)而沒有 uri,如 http://127.0.0.1,客戶端請(qǐng)求的uri將被傳遞至指定域名
如果 location 中使用模式匹配 url,那么 url 也會(huì)被傳遞至代理 url 的末端
如果 location 中使用了 uri 重寫,那么 proxy_pass 會(huì)使用重寫后的結(jié)果進(jìn)行處理
proxy_set_header header value 對(duì)轉(zhuǎn)發(fā)的報(bào)文首部進(jìn)行修改

2.5 反向代理時(shí)的緩存相關(guān)設(shè)定

proxy_cache_path path [levels=levels] keys_zone=name:size

定義磁盤緩存路徑,nignx 的緩存是以鍵值方式存放的,keys_zone 用于指定鍵存放的內(nèi)存空間名字和大小,對(duì)應(yīng)的值則存放在 path 指定的路徑中。levels 可以指定緩存存放路徑的級(jí)數(shù)和名稱字符數(shù)。此設(shè)置只能在 http 段中定義。

如:

proxy_cache_path /var/cache/nginx/proxy levels=1:2 keys_zone=one:10m;


proxy_cache_valid [code ...] time 指定不同響應(yīng)碼的內(nèi)容的緩存時(shí)間

如:

proxy_cache_valid 200 302 10m;
proxy_cache_valid 404  1m;
proxy_cache_valid any  1m;


proxy_cache_method method 定義哪些方法的請(qǐng)求結(jié)果可以被緩存,如:

proxy_cache_method get;
proxy_cache_method head;


proxy_cache name 指定使用預(yù)先定義的緩存空間用于緩存

2.6 fastcgi 代理的設(shè)置

使用 fastcgi 時(shí),設(shè)置代理的方法同 porxy_pass 類似,同時(shí)還可以使用 fastcgi 緩存,設(shè)置的方法也和 proxy_cache 類似。

location ~ \.php$ {
 root   /web/htdocs;
 fastcgi_pass 127.0.0.1:9000;
 fastcgi_index index.php;
 fastcgi_param script_filename $document_root$fastcgi_script_name;
 include  fastcgi_params;
}


3. 一些常用內(nèi)置變量

$arg_name:請(qǐng)求 uri 中的 name 參數(shù)至
$args:請(qǐng)求 uri 的所有參數(shù),和 $query_string 相同
$uri:當(dāng)前請(qǐng)求的 uri,不帶參數(shù)
$request_uri:請(qǐng)求的 uri,帶完整參數(shù)
$host:http 請(qǐng)求報(bào)文中 host 首部,如果沒有 host 首部,則以處理此請(qǐng)求的虛擬主機(jī)的主機(jī)名替代
$hostname:nginx 服務(wù)運(yùn)行在主機(jī)的主機(jī)名
$remote_addr:客戶端 ip
$remote_port:客戶端 port
$remote_user:使用用戶認(rèn)證時(shí)客戶端用戶輸入的用戶名
$request_filename:用戶請(qǐng)求中的 uri 經(jīng)過本地 root  或 alias 轉(zhuǎn)換后映射的本地的文件路徑
$request_method:請(qǐng)求方法
$server_addr:服務(wù)器地址
$server_name:服務(wù)器名稱
$server_port:服務(wù)器端口
$server_protocol:服務(wù)器向客戶端發(fā)送響應(yīng)時(shí)的協(xié)議,如 http/1.1,http/1.0
$scheme:在請(qǐng)求中使用的 scheme,如 https://www.magedu.com/ 中的 https
$http_name:匹配請(qǐng)求報(bào)文中的指定 header,如 $http_host 匹配請(qǐng)求報(bào)文中的 host 首部
$sent_http_name:匹配響應(yīng)報(bào)文中指定的 header,例如 $sent_content_type 匹配響應(yīng)報(bào)文中的 content-type 首部
$status:響應(yīng)狀態(tài)

以上就是“Nginx服務(wù)器搭建和基本配置實(shí)例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會(huì)為大家更新不同的知識(shí),如果還想學(xué)習(xí)更多的知識(shí),請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


網(wǎng)站標(biāo)題:Nginx服務(wù)器搭建和基本配置實(shí)例分析
網(wǎng)站路徑:http://weahome.cn/article/iiiogs.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部