nginx 特點(diǎn):
- web 服務(wù)器, 輕量級(jí), 能處理大并發(fā)量
- 反向代理服務(wù)器(負(fù)載均衡)
你可以輕松的在服務(wù)器上通過(guò) Nginx 部署 HTTP 靜態(tài)服務(wù)。
windows 下 Nginx 環(huán)境的安裝
下載壓縮包后進(jìn)行解壓,雙擊里面的 nginx.exe 即可運(yùn)行
linux 下 Nginx 環(huán)境的安裝
CentOS 下 yum 安裝
使用 yum
來(lái)安裝 Nginx
yum install nginx -y
ubuntu 下 apt-get 安裝
apt-get install nginx
使用 docker 安裝 nginx
請(qǐng)參考教程: Docker 安裝 Nginx | 菜鳥(niǎo)教程
https://www.runoob.com/docker/docker-install-nginx.html
linux 環(huán)境手動(dòng)安裝 nginx
1. 從 nginx 官網(wǎng)下載穩(wěn)定版 Stable version 安裝包
http://nginx.org/en/download.html
2. 安裝 Nginx 依賴(lài),pcre、openssl嘱蛋、gcc、zlib(推薦使? yum 源?動(dòng)安裝)
yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel
3. 解壓 Nginx 軟件包
tar -xvf nginx-1.17.8.tar
4. 進(jìn)?解壓之后的?錄 nginx-1.17.8
cd nginx-1.17.8
5. 命令?執(zhí)?./configure
6. 命令?執(zhí)? make
7. 命令?執(zhí)? make install,完畢之后在/usr/local/下會(huì)產(chǎn)??個(gè)nginx?錄
-bash: make: command not found - 解決辦法
一般出現(xiàn)這個(gè)-bash: make: command not found提示祟蚀,是因?yàn)榘惭b系統(tǒng)的時(shí)候使用的是最小化mini安裝,系統(tǒng)沒(méi)有安裝 make 等常用命令割卖,直接 yum 安裝即可前酿。
yum -y install gcc make
8. 進(jìn)入/usr/local/nginx/sbin
, 鍵入 ./nginx
即可啟動(dòng)默認(rèn)80端口的nginx.
mac下 nginx 的使用
分別執(zhí)行下面這兩行命令,就會(huì)自動(dòng)安裝nginx鹏溯,等待安裝完成即可
brew install nginx
其他命令
- brew search nginx
- brew remove nginx
mac 下一些重要文件的路徑
核心安裝目錄 /usr/local/Cellar/nginx/x.y.z
啟動(dòng)文件在該目錄的bin下面
歡迎頁(yè)面在html下面
Docroot (服務(wù)器默認(rèn)路徑): /usr/local/var/www
The default port has been set in `/usr/local/etc/nginx/nginx.conf`to 8080 so that
nginx can run without sudo.
nginx will load all files in `/usr/local/etc/nginx/servers/`
To have launchd start nginx now and restart at login:
`brew services start nginx`
Or, if you don't want/need a background service you can just run:
`nginx`
其他命令:
brew services restart nginx
重啟 nginx 服務(wù)
brew services stop nginx
停止nginx服務(wù).
mac 安裝過(guò)程中遇到的問(wèn)題
$ brew install pcre
發(fā)現(xiàn)
Error: The `brew link` step did not complete successfully
The formula built, but is not symlinked into /usr/local
Could not symlink .
/usr/local/opt is not writable.
然后試試brew link pcre
也不行
Error: Could not symlink .
/usr/local/opt is not writable.
使用$ sudo chown -R $(whoami):admin /usr/local
發(fā)現(xiàn)還是沒(méi)用, 最終手動(dòng)創(chuàng)建/user/local/opt 文件夾解決了(Mac High Sierra 中不能改變/usr/local的擁有者的問(wèn)題)
常用命令
Nginx 讓新的配置生效 nginx -s reload
關(guān)閉命令: nginx -s stop
運(yùn)行以下命令查看 Nginx 版本罢维。nginx -v
如果是通過(guò)包管理器進(jìn)行安裝
運(yùn)行以下命令啟動(dòng) Nginx 服務(wù)。
systemctl start nginx
= service nginx restart
運(yùn)行以下命令設(shè)置 Nginx 服務(wù)開(kāi)機(jī)自啟動(dòng)丙挽。
systemctl enable nginx
運(yùn)行以下命令設(shè)置 Nginx 禁止開(kāi)機(jī)自啟肺孵。
systemctl disable nginx
停止服務(wù)
systemctl stop nginx
配置文件所在目錄
- 配置文件 /etc/nginx
- 網(wǎng)頁(yè)存放文件 /usr/share/nginx/html
教程
如何在 linux 下 安裝多個(gè) nginx
./configure --prefix=/home/work/nginx2 ..... // 第二個(gè)nginx的安裝配置, 用于指定安裝目錄
make && make install
./configure --prefix=/home/work/nginx3 ..... // 第三個(gè)nginx的安裝配置
make && make install
功能演示
nginx 反向代理
這里用到了關(guān)鍵字 proxy_pass
server {
listen 9000;
server_name localhost;
location /risk_pdf {
proxy_pass https://ebt.oss-cn-beijing.aliyuncs.com/PDF_SC;
}
}
nginx 禁止限制某個(gè) IP 地址或網(wǎng)段訪問(wèn)服務(wù)器 - 不要學(xué)我說(shuō)話 - 博客園
https://www.cnblogs.com/hmycl/p/14416350.html
Nginx 下安裝 SSL 證書(shū)
申請(qǐng)證書(shū) todo
安裝證書(shū)
首先找到Nginx 配置目錄.例如我的目錄在/etc/nginx
在證書(shū)控制臺(tái)下載Nginx版本證書(shū)匀借。下載到本地的壓縮文件包解壓后包含:
.crt文件:是證書(shū)文件,crt是pem文件的擴(kuò)展名平窘。
.key文件:證書(shū)的私鑰文件(申請(qǐng)證書(shū)時(shí)如果沒(méi)有選擇自動(dòng)創(chuàng)建CSR吓肋,則沒(méi)有該文件)。
友情提示: .pem擴(kuò)展名的證書(shū)文件采用Base64-encoded的PEM格式文本文件瑰艘,可根據(jù)需要修改擴(kuò)展名是鬼。
- 放置 crt 證書(shū)文件和 key 私鑰文件并打開(kāi) Nginx 安裝目錄下 conf 目錄中的 nginx.conf 文件. 將其修改為 (以下屬性中 ssl 開(kāi)頭的屬性與證書(shū)配置有直接關(guān)系,其它屬性請(qǐng)結(jié)合自己的實(shí)際情況復(fù)制或調(diào)整) :
/etc/pki/nginx/private/www.abc.com.key
/etc/pki/nginx/server/www.abc.com.crt.pem
server {
listen 443;
server_name localhost;
ssl on;
root html;
index index.html index.htm;
ssl_certificate cert/a.pem;
ssl_certificate_key cert/a.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
location / {
root html;
index index.html index.htm;
}
}
2. 重啟 Nginx 服務(wù)
進(jìn)入 nginx 可執(zhí)行目錄下紫新,輸入命令./nginx -s reload
即可.
301 重定向
301 重定向是很常見(jiàn)的需求均蜜,比如訪問(wèn) nowamagic.net,自動(dòng)跳到 www.nowamagic.net弊琴≌琢或者倒過(guò)來(lái),訪問(wèn) www.nowamagic.net 跳到 nowamagic.net敲董。Nginx 中配置 301 重定向(301 redirect)很容易紫皇,下面介紹下方法。
單獨(dú)為不帶 www 的 URL 單獨(dú)設(shè)一條 server 規(guī)則:
server {
server_name nowamagic.net;
rewrite ^(.*) http://www.nowamagic.net$1 permanent;
}
再 nginx -s reload
即可腋寨。Nginx 的 301 配置還是很簡(jiǎn)單的聪铺。
記錄
如何將 nginx 添加到全局變量中(環(huán)境變量)
ln -s /usr/local/nginx/sbin/nginx /usr/local/bin/
nginx在windowns下路徑
實(shí)測(cè)有效
報(bào)錯(cuò)總結(jié)
使用 windows 版本的 nginx 啟動(dòng)時(shí)遇到(1113: No mapping for the Unicode character exists in the target multi-byte code page)這個(gè)錯(cuò)誤
解決:路徑里面包含有中文的緣故
解決有緩存的問(wèn)題
add_header Cache-Control no-store;
location / {
root html;
index index.html index.php;
# 禁止緩存,每次都從服務(wù)器請(qǐng)求
add_header Cache-Control no-store;
}
遇到的問(wèn)題
nginx reload 與 restart 的區(qū)別
reload --重新加載萄窜,reload 會(huì)重新加載配置文件铃剔,Nginx 服務(wù)不會(huì)中斷。而且 reload 時(shí)會(huì)測(cè)試 conf 語(yǔ)法等查刻,如果出錯(cuò)會(huì) rollback 用上一次正確配置文件保持正常運(yùn)行键兜。
restart --重啟(先stop后start),會(huì)重啟 Nginx 服務(wù)穗泵。這個(gè)重啟會(huì)造成服務(wù)一瞬間的中斷普气,如果配置文件出錯(cuò)會(huì)導(dǎo)致服務(wù)啟動(dòng)失敗,那就是更長(zhǎng)時(shí)間的服務(wù)中斷了佃延。
所以现诀,如果是線上的服務(wù),修改的配置文件一定要備份履肃。為了保證線上服務(wù)高可用仔沿,最好使用 reload。
還有一點(diǎn)尺棋,reload 只是重新加載配置文件封锉,不會(huì)清理 nginx 的一些緩存,在有些需要清理緩存的場(chǎng)景需要 restart ,例如 upstream 后端配置的集群服務(wù)地址是域名而不是 ip烘浦,當(dāng)后端 IP 變了抖坪,就需要清除該域名的解析緩存,此時(shí)需要重啟而不是 reload闷叉。