Nginx安裝配置詳解
不論是本地開(kāi)發(fā),還是遠(yuǎn)程到 Server 開(kāi)發(fā),還是給提供 demo 給人看效果,我們時(shí)常需要對(duì) Nginx 做配置,Nginx 的配置項(xiàng)相當(dāng)多,如果考慮性能配置起來(lái)會(huì)比較麻煩。不過(guò),我們往往只是需要一個(gè)靜態(tài) Server,或者一個(gè)反向代理 Server,這對(duì) Nginx 來(lái)說(shuō)小菜一碟。

簡(jiǎn)介
Nginx 的安裝:
# CentOS yum install nginx; # Ubuntu sudo apt-get install nginx; # Mac brew install nginx;
一般可以在/etc/nginx/nginx.conf中配置,啟動(dòng)參數(shù)為:
# 啟動(dòng) nginx -s start; # 重新啟動(dòng),熱啟動(dòng),修改配置重啟不影響線上 nginx -s reload; # 關(guān)閉 nginx -s stop; # 修改配置后,可以通過(guò)下面的命令測(cè)試是否有語(yǔ)法錯(cuò)誤 nginx -t;
-s,signal,意思就是向 nginx 發(fā)送start|reload|stop命令,還是很好理解的。先看一個(gè)最簡(jiǎn)單的nginx.conf配置:
events {
# 需要保留這一個(gè)段落,可以為空
}
http {
server {
listen 127.0.0.1:8888;
location / {
root /home/chenya/test/;
}
}
}啟動(dòng)后,訪問(wèn)htttp://127.0.0.1:8888,如果/home/chenya/test/下有index.html文件就會(huì)展示index.html的內(nèi)容,否則返回404。
Nginx 配置一個(gè) Web 服務(wù)器
以下對(duì)配置 Web 服務(wù)器的參數(shù)做簡(jiǎn)單說(shuō)明,包括如何配置端口、域名,如何處理請(qǐng)求,如何響應(yīng)請(qǐng)求。
1、 虛擬主機(jī)和請(qǐng)求的分發(fā)
域名和端口的配置
listen 127.0.0.1:8000; listen *:8000; listen localhost:8000; # IPV6 listen [::]:8000; # other params listen 443 default_serer ssl; listen 127.0.0.1 default_server accept_filter=dataready backlog=1024
主機(jī)名配置
server_name www.chenya.site chenya.site server_name *.chenya.com server_name ~^\.chenya\.com$
URI 匹配
location = / {
# 完全匹配 =
# 大小寫(xiě)敏感 ~
# 忽略大小寫(xiě) ~*
}
location ^~ /images/ {
# 前半部分匹配 ^~
# 可以使用正則,如:
# location ~* \.(gif|jpg|png)$ { }
}
location / {
# 如果以上都未匹配,會(huì)進(jìn)入這里
}2、 文件路徑的定義
根目錄設(shè)置
location / {
root /home/chenya/test/;
}別名設(shè)置
location /blog {
alias /home/chenya/www/blog/;
}
location ~ ^/blog/(\d+)/([\w-]+)$ {
# /blog/20141202/article-name
# -> /blog/20141202-article-name.md
alias /home/chenya/www/blog/$1-$2.md;
}首頁(yè)設(shè)置
index /html/index.html /php/index.php;
重定向頁(yè)面設(shè)置
error_page 404 /404.html;
error_page 502 503 /50x.html;
error_page 404 =200 /1x1.gif;
location / {
error_page 404 @fallback;
}
location @fallback {
# 將請(qǐng)求反向代理到上游服務(wù)器處理
proxy_pass http://localhost:9000;
}try_files 設(shè)置
try_files $uri $uri.html $uri/index.html @other;
location @other {
# 嘗試尋找匹配 uri 的文件,失敗了就會(huì)轉(zhuǎn)到上游處理
proxy_pass http://localhost:9000;
}
location / {
# 嘗試尋找匹配 uri 的文件,沒(méi)找到直接返回 502
try_files $uri $uri.html =502;
}Nginx 配置反向代理服務(wù)器
反向代理(reserve proxy)方式是指用代理服務(wù)器來(lái)接受 Internet 上的連接請(qǐng)求,然后將請(qǐng)求轉(zhuǎn)發(fā)給內(nèi)部網(wǎng)絡(luò)中的上游服務(wù)器,并將上游服務(wù)器上得到的結(jié)果返回給 Internet 上請(qǐng)求連接的客戶端,此時(shí)代理服務(wù)器對(duì)外的表現(xiàn)就是一個(gè) Web 服務(wù)器。
Nginx 具備超強(qiáng)的高并發(fā)高負(fù)載能力,一般會(huì)作為前端的服務(wù)器直接向客戶端提供靜態(tài)文件服務(wù);而業(yè)務(wù)一般還包含一些業(yè)務(wù)邏輯需要 Apache、Tomcat 等服務(wù)器來(lái)處理,故通常 Nginx 對(duì)外表現(xiàn)即為靜態(tài) Web 服務(wù)器也是反向代理服務(wù)器。
缺點(diǎn)是增加了一次請(qǐng)求的處理時(shí)間,優(yōu)點(diǎn)是降低了上游服務(wù)器的負(fù)載,盡量將壓力放在 Nginx 服務(wù)器上。
1、負(fù)載均衡配置
upstream,定義一個(gè)上游服務(wù)器集群
upstream backend {
# ip_hash;
server s1.chenya.com;
server s2.chenya.com;
}
server {
location / {
proxy_pass http://backend;
}
}2、反向代理
proxy_pass 將請(qǐng)求轉(zhuǎn)發(fā)到有處理能力的端上,默認(rèn)不會(huì)轉(zhuǎn)發(fā)請(qǐng)求中的 Host 頭部
location /blog {
prox_pass http://localhost:9000;
### 下面都是次要關(guān)注項(xiàng)
proxy_set_header Host $host;
proxy_method POST;
# 指定不轉(zhuǎn)發(fā)的頭部字段
proxy_hide_header Cache-Control;
proxy_hide_header Other-Header;
# 指定轉(zhuǎn)發(fā)的頭部字段
proxy_pass_header Server-IP;
proxy_pass_header Server-Name;
# 是否轉(zhuǎn)發(fā)包體
proxy_pass_request_body on | off;
# 是否轉(zhuǎn)發(fā)頭部
proxy_pass_request_headers on | off;
# 顯形/隱形 URI,上游發(fā)生重定向時(shí),Nginx 是否同步更改 uri
proxy_redirect on | off;
}一個(gè)簡(jiǎn)單的例子,Node.js
一個(gè)十分常見(jiàn)的需求:處理請(qǐng)求,如果是靜態(tài)文件,Nginx 直接返回,否則交給 Node 服務(wù)器處理。首先創(chuàng)建了一個(gè) Node 服務(wù)器:
const http = require('http');
http.createServer((req, res) => {
res.end('hello world');
}).listen(9000);任何請(qǐng)求過(guò)來(lái)都返回hello world,簡(jiǎn)版的 Nginx 配置如下,
events {
# 這里可不寫(xiě)東西
use epoll;
}
http {
server {
listen 127.0.0.1:8888;
# 如果請(qǐng)求路徑跟文件路徑按照如下方式匹配找到了,直接返回
try_files $uri $uri/index.html;
location ~* ^/(js|css|image|font)/$ {
# 靜態(tài)資源都在 static 文件夾下
root /home/chenya/www/static/;
}
location /app {
# Node.js 在 9000 開(kāi)了一個(gè)監(jiān)聽(tīng)端口
proxy_pass http://127.0.0.1:9000;
}
# 上面處理出錯(cuò)或者未找到的,返回對(duì)應(yīng)狀態(tài)碼文件
error_page 404 /404.html;
error_page 502 503 504 /50x.html;
}
}首先 try_files,嘗試直接匹配文件;沒(méi)找到就匹配靜態(tài)資源;還沒(méi)找到就交給 Node 處理;否則就返回 4xx/5xx 的狀態(tài)碼。
測(cè)試語(yǔ)法
nginx -t
到此這篇關(guān)于Nginx安裝配置的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持本站。
版權(quán)聲明:本站文章來(lái)源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請(qǐng)保持原文完整并注明來(lái)源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非maisonbaluchon.cn所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來(lái)源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來(lái),僅供學(xué)習(xí)參考,不代表本站立場(chǎng),如有內(nèi)容涉嫌侵權(quán),請(qǐng)聯(lián)系alex-e#qq.com處理。
關(guān)注官方微信