摘要:它的作用是監聽后建立的連接,對讀寫事件進行添加刪除。事件處理模型和的非阻塞模型結合在一起使用。
趁著爸媽做年夜飯之前,把之前做的筆記貼出來,新的一年到了,祝大家 Nginx + Node + Vue 部署初試
知乎
個人博客
Github
日常學習筆記
Nginx定義
異步框架的 Web服務器,也可以用作反向代理,負載平衡器 , HTTP緩存, 媒體流等的開源軟件。它最初是一個旨在實現最高性能和穩定性的Web服務器。除了HTTP服務器功能外,NGINX還可以用作電子郵件(IMAP,POP3和SMTP)的代理服務器以及HTTP,TCP和UDP服務器的反向代理和負載平衡器。
特點
更快
高擴展性, Nginx的模塊都是嵌入到二進制文件中執行
高可靠性
低內存消耗
單機支持10萬次的并發連接
熱部署, master管理進行與work工作進程分離設計,因此具備熱部署功能
最自由的BSD許可協議
功能
靜態服務(css , js , html, images, videos)
SSL 和 TLS SNI 支持
HTTP/HTTPS, SMTP, IMAP/POP3 反向代理
FastCGI反向代理
負載均衡
頁面緩存(CDN)
支持gzip、expirse
支持 keep-alive 和管道連接
基于 PCRE 的 rewrite 重寫模塊
帶寬限制
基于IP 和名稱的虛擬主機服務
支持訪問速率、并發限制
反向代理(適用2000WPV、并發連接1W/秒),簡單的負載均衡和容錯
基于客戶端 IP 地址和 HTTP 基本認證的訪問控制
Mac 安裝Nginx// 推薦使用`brew`, 安裝`homebrew` /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" // Homebrew 安裝 Nginx brew install nginx // Mac 下 Nginx的目錄 cd /usr/local/etc/nginx ll -al vim nginx.conf
homebrew詳見
Nginx 參數列表配置參數屬性 | 解釋說明 | 參數列表 | ||||
---|---|---|---|---|---|---|
user | 設置nginx服務的系統使用用戶 |
nobody(注意:此處用戶如果比啟動Nginx的用戶權限低,你需要使用當前用戶重啟Nginx) nginx -s stop 關閉nginx-> nginx 啟動-> `ps aux |
grep nginx`查看啟動用戶 | |||
worker_processes | 開啟的線程數 | 一般與服務器核數保持一致 | ||||
error_log | 定位全局錯誤日志文件 | 錯誤日志定義等級,[ debug | info notice | warn | error | crit ],debug輸出最多,crir輸出最少 |
pid | 指定進程id的存儲文件位置 | |||||
worker_rlimit_nofile | 指定一個nginx進程打開的最多文件描述符數目,受系統進程的最大打開文件數量限制 | |||||
events | 包含Nginx中所有處理連接的設置 | |||||
http | Nginx http處理的所有核心特性 |
Nginx是以event(事件)處理模型為基礎的模塊。它為了支持跨平臺,抽象出了event模塊。它支持的event處理類型有:AIO(異步IO),/dev/poll(Solaris 和Unix特有),epoll(Linux特有),eventport(Solaris 10特有),kqueue(BSD特有),poll,rtsig(實時信號),select等。
它的作用是監聽accept后建立的連接,對讀寫事件進行添加刪除。事件處理模型和Nginx的非阻塞IO模型結合在一起使用。當IO可讀可寫的時候,相應的讀寫事件就會被喚醒,此時就會去處理事件的回調函數。
配置參數屬性 | 解釋說明 | 參數列表 | ||||||
---|---|---|---|---|---|---|---|---|
worker_connections | 定義每個進程的最大連接數,受系統進程的最大打開文件數量限制 | 單個后臺worker process進程的最大并發鏈接數 (最大連接數= worker_processes worker_connections) 在反向代理環境下: 最大連接數 = worker_processes worker_connections / 4 |
||||||
use | 選擇一個可用的事件的模型(可以在編譯時指定),Nginx會自動選擇事件的模型 | [ epoll | /dev/poll | poll | eventport | kqueue | select | rtsig ] |
multi_accept | 一個新連接通知后接受盡可能多的連接 | on / off | ||||||
accept_mutex | 開啟或者禁用使用互斥鎖來打開sockets | on / off |
Event Use支持的事件模型
Events詳見
HTTP可以嵌套多個server,配置代理,緩存,日志定義等絕大多數功能和第三方模塊的配置。
配置參數屬性 | 解釋說明 | 參數列表 |
---|---|---|
include | 主模塊指令,實現對配置文件所包含的文件的設定,可以減少主配置文件的復雜度,DNS主配置文件中的zonerfc1912,acl基本上都是用include語句 | |
default_type | 核心模塊指令 | 默認設置為二進制流,也就是當文件類型未定義時使用這種方式 |
log_format | 日志格式的設定 | 日志格式的名稱,可自行設置,后面引用 |
access_log | 引用日志 | 引用log_format設置的名稱 |
keepalive_timeout | 設置客戶端連接保存活動的超時時間 | 0是無限制 |
sendfile | 開啟高效文件傳輸模式 | on / off |
tcp_nopush | 開啟防止網絡阻塞 | on / off |
tcp_nodelay | 開啟防止網絡阻塞 | on / off |
upstream | 負載均衡 | |
server | Nginx的server虛擬主機配置 |
它的作用是實現在輪詢和客戶端IP之間的后端服務器負荷平衡。
配置參數屬性 | 解釋說明 |
---|---|
輪詢(默認) | 當weight不指定時,各服務器weight相同,每個請求按時間順序逐一分配到不同的后端服務器,如果后端服務器down掉,能自動剔除。 |
weight | 指定輪詢幾率,weight和訪問比率成正比,用于后端服務器性能不均的情況 |
ip_hash | 每個請求按訪問ip的hash結果分配,這樣每個訪客固定訪問一個后端服務器,可以解決session的問題。 |
fair(第三方) | 按后端服務器的響應時間來分配請求,響應時間短的優先分配。 |
url_hash(第三方) | 按訪問url的hash結果來分配請求,使每個url定向到同一個后端服務器,后端服務器為緩存時比較有效。 |
weight 默認為1.weight越大,負載的權重就越大。
例如:
upstream news { server 127.0.0.1:9527 backup; server 127.0.0.1:9527 weight=1 max_fails=2 fail_timeout=3; ... }
配置參數屬性 | 解釋說明 |
---|---|
backup | 預留的備份服務器 |
down | 當前的server暫時不參與負載均衡 |
fail_timeout | 經過max_fails 失敗后,服務暫停的時間 |
max_conns | 限制最大的接收的連接數 |
max_fails | 允許請求失敗的次數 |
use location:在server中添加
proxy_pass http://127.0.0.1:9527; // 因為我的API接口是這個,such as /api/profile // location 具體匹配規則詳見后面 location ~ /api/ { proxy_pass http://127.0.0.1:9527; }Server
配置虛擬主機的相關參數,一個http中可以有多個server。
配置參數屬性 | 解釋說明 | 參數列表 |
---|---|---|
listen | 監聽端口 | http -> 80 / https -> 443 |
server_name | 設置主機域名 | localhost |
charset | 設置訪問的語言編碼 | |
access_log | 設置虛擬主機訪問日志的存放路徑及日志的格式 | |
location | 設置虛擬主機的基本信息 |
配置請求的路由,以及各種頁面的處理情況。
配置參數屬性 | 解釋說明 | 參數列表 |
---|---|---|
root | 設置虛擬主機的網站根目錄 | Vue項目的根目錄/Users/rainy/Desktop/MyWork/Work/cloudwiz-website/dist |
index | 設置虛擬主機默認訪問的網頁 | index.html index.htm |
proxy | 通過不同協議將請求從NGINX傳遞到代理服務器 |
=: 開頭表示精確匹配,如 api 中只匹配根目錄結尾的請求,后面不能帶任何字符串.
^~ :開頭表示uri以某個常規字符串開頭,不是正則匹配.
~: 開頭表示區分大小寫的正則匹配.
~*: 開頭表示不區分大小寫的正則匹配.
/ : 通用匹配, 如果沒有其它匹配,任何請求都會匹配到.
匹配優先級(高到低)
location =
location 完整路徑
location ^~ 路徑
location ~,~* 正則順序
location 部分起始路徑
/
詳見Location配置
Reverse Proxy當NGINX代理請求時,它會將請求發送到指定的代理服務器,獲取響應并將其發送回客戶端。可以使用指定的協議將請求代理到HTTP服務器(另一個NGINX服務器或任何其他服務器)或非HTTP服務器(可以運行使用特定框架(如PHP或Python)開發的應用程序)。
location / some / path / { proxy_pass http://www.example.com:8080; proxy_set_header Host $ host ; proxy_set_header X-Real-IP $ remote_addr ; // 禁用特定位置的緩沖 proxy_buffering off ; proxy_buffers 16 4k ; proxy_buffer_size 2k ; proxy_bind 127.0.0.2 ; // IP地址也可以用變量指定 }
將請求傳遞給非HTTP代理服務器,**_pass應使用相應的指令:
fastcgi_pass 將請求傳遞給FastCGI服務器
uwsgi_pass 將請求傳遞給uwsgi服務器
scgi_pass 將請求傳遞給SCGI服務器
memcached_pass 將請求傳遞給memcached服務器
配置參數屬性 | 解釋說明 | 參數列 |
---|---|---|
proxy_pass | 將請求傳遞給HTTP代理服務器 | |
proxy_set_header | 傳遞請求標頭 | 默認情況下,NGINX在代理請求中重新定義兩個頭字段“Host”和“Connection”,并刪除其值為空字符串的頭字段。“Host”設置為$proxy_host變量,“Connection”設置為close。 |
proxy_buffering | 負責啟用和禁用緩沖 | on / off |
proxy_buffers | 請求分配的緩沖區的大小和數量 | |
proxy_buffer_size | 代理服務器的響應的第一部分存儲在多帶帶的緩沖區大小 | 通常包含一個相對較小的響應頭,并且可以比其余響應的緩沖區小。 |
proxy_bind | 接受來自特定IP網絡或IP地址范圍的連接 | 指定proxy_bind必要網絡接口的指令和IP地址 |
詳見Proxy
全局變量Global Variable變量名 | 變量含義 |
---|---|
$args | 請求中的參數 |
$content_length | HTTP請求信息里的Content-Length |
$content_type | 請求信息里的Content-Type |
$host | 請求信息中的Host,如果請求中沒有Host行,則等于設置的服務器名 |
$http_cookie | cookie 信息 |
$http_referer | 引用地址 |
$http_user_agent | 客戶端代理信息 |
$remote_addr | 客戶端地址 |
$remote_port | 客戶端端口號 |
$remote_user | 客戶端用戶名,認證用 |
$request_method | 請求的方法,比如GET、POST等 |
$request_uri | 完整的原始請求URI(帶參數) |
$scheme | 請求方案,http或https |
$server_addr | 接受請求的服務器的地址,如果沒有用listen指明服務器地址,使用這個變量將發起一次系統調用以取得地址(造成資源浪費); |
$server_protocol | 請求的協議版本,HTTP/1.0或HTTP/1.1 |
$uri | 請求中的當前URI, $uri在請求處理期間 ,值可能會發生變化,例如在執行內部重定向或使用索引文件時 |
全局變量詳見Alphabetical index of variables
修改 http server中的配置
啟動Nginx
nginx ps -ef | grep nginx
重新加載修改后的Nginx配置文件
nginx -s reload
多謝小伙伴給提出的問題(詳見評論區),reload和resatrt是兩個不同的概念。
reload
重新加載conf文件,不中斷Nginx服務,conf文件有問題則加載上一次的conf.
restart
會根據配置文件,重啟整個Nginx服務,造成服務器中斷一段時間,當然會因為conf文件問題報錯。
關閉Nginx
nginx -s stop
因為我已經啟動了,所以就重啟一下Nginx即可
Linux安裝NginxLinux安裝
常見的Linux命令
使用pstree查看當前服務器啟動的進程
pstree
查找Nginx的位置
ps -aux | grep nginx
進入nginx的目錄
然后配置nginx.conf文件即可
http { upstream add-news { server 127.0.0.1:9527; } server { listen 8080; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; root /Users/rainy/Desktop/MyWork/Work/website/dist; index index.html index.htm; location / { # root html; try_files $uri $uri/ @router; index index.html index.htm; } location @router { rewrite ^.*$ /index.html last; } location ~ /api/ { proxy_pass http://127.0.0.1:9527; } # 我的圖片存放在本地服務器上的路徑
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/40313.html
摘要:部署項目寫在前面作為輕量級虛擬化技術,擁有持續集成版本控制可移植性隔離性和安全性等優勢。容器可以被創建啟動停止刪除暫停等。重新運行應用容器直接基于鏡像來啟動容器,運行命令將宿主機的掛載到容器的目錄上。Docker 部署 vue 項目 1.寫在前面: Docker 作為輕量級虛擬化技術,擁有持續集成、版本控制、可移植性、隔離性和安全性等優勢。本文使用Docker來部署一個vue的前端應用,并盡...
摘要:一個百度開發者賬號,而且里面應該要有錢哦。好了,應該就是上面那幾個,下面我們開始,一在百度開發云上創建應用對了應該去哪里創建呢,走你。訪問配置斷線重連我們可以建一個這樣的配置,應用啟動時初始化。好了,現在我們可以體驗百度云的樂趣了。 準備工作 一個基于nodejs的應用。 一個百度開發者賬號,而且里面應該要有錢哦。 代碼上傳管理工具git或者svn。 好了,應該就是上面那幾個,下面我...
摘要:首先,的命令和并不能在全局使用。文章有意將瀏覽器不能訪問服務器的兩個問題寫出來,是因為作者在排查問題的時候,發現在服務器直接訪問的頁面,能很好地檢查排除問題在百度尋找問題答案的時候,發現這種做法也得到了不少人的肯定。 前段時間要把項目部署到服務器,期間踩了不少的坑。故寫下這篇文章,從零開始把自己部署的過程都記錄下來,希望能給其他像我一樣的小白一點幫助。如果有疏漏的地方,請各位客官指出,...
閱讀 2681·2023-04-25 20:19
閱讀 1947·2021-11-24 09:38
閱讀 1636·2021-11-16 11:44
閱讀 4359·2021-09-02 15:40
閱讀 1320·2019-08-30 15:55
閱讀 2023·2019-08-30 15:52
閱讀 3766·2019-08-29 17:20
閱讀 2267·2019-08-29 13:48