
說到Nginx,大家可能會閃過幾個畫面
1、這不是后端運維要用到技術嗎,前端為啥要學這個
2、我學Nginx也沒啥用啊
3、學了Nginx我能漲薪嗎
4、,,,

【文章福利】小編推薦自己的linuxC/C++語言交流群:832218493!整理了一些個人覺得比較好的學習書籍、視頻資料共享在群檔案里面,有需要的可以自行添加哦!~
一、簡介
我個人拙見,前端本身就是一個很雜,且邊界比較模糊的職業,若是在大公司,當然前端可能只需要專注頁面上的業務開發,部署專案這塊會交給一些專業的運維同事,輪不到你來操心這些事情,但很遺憾,大部分程式員不在大公司作業,多數就職于中小型的小廠,那么在小廠的話,很大概率上公司是沒有運維人員的,前端專案的部署和運維很可能就會交給前端同學來管理,再退一步講,平時我們接一些私活或者自己玩一些專案,都是需要部署到線上服務器,那么就可以選擇我們好用的Nginx,借用官方的解釋——“Nginx (engine x) 是一個高性能的HTTP和反向代理web服務器,同時也提供了IMAP/POP3/SMTP服務“
二、需要的環境
學習Nginx需要什么環境呢?
1、買一個云服務器(騰訊云 or 阿里云)價格有點貴,就我目前而言,買的是騰訊的99元包年,最近好像有活動(非廣告)
2、自己找個電腦搭建一下服務器的環境
3、搞個虛擬機,但是配置及其麻煩,新手不建議嘗試
我買的服務器作業系統是CentOS 7.6 64位
通過服務器提供的yum去安裝一些工具庫
遠程登錄服務器 ssh root@IP(這里的IP就是你購買服務器的IP地址),騰訊服務器里可以讓你選擇密碼登錄還是密鑰登錄,我選擇添加本地密鑰登錄,這樣比較方便,不用每次都輸入密碼,進入服務器之后就是這樣的畫面

服務器遠程界面
然后輸入下面這段代碼,安裝相應的工具包和庫
yum -y install gcc gcc-c++ autoconf pcre-devel make automake
yum -y install wget httpd-tools vim
基本上沒什么大問題就會顯示“Complete!”
恭喜你,服務器環境基本安裝完畢~
三、搭建Nginx配置
個人建議,可以先去Nginx官方檔案先看看,了解一下Nginx再開始下面的閱讀,我盡量不說理論知識,講一些實操,因為我覺得理論知識我說的肯定不如官網來得細致,
首先看看服務器內yum內的Nginx源的版本
yum list | grep nginx

這個版本不是很高,我們可以使用官方提供的源,
在終端輸入如下
vim /etc/yum.repos.d/nginx.repo
然后填入下列代碼,注意,我的centos是7.x版本,所以我寫的是7,同學們可以按照自己的版本來

保存退出
然后安裝 nginx
yum install nginx
nginx -v
運行上面指令之后,能得到最新的nginx版本如下

只能用舒服二字形容,一切順利安裝好nginx,玩歸玩,鬧歸鬧,一定要把nginx掌握好~~~
四、Nginx的組態檔
通過‘rpm -ql nginx’ 指令查看nginx都安裝到了哪些目錄

幾個關鍵的位置要注意一下:‘/etc/nginx’、’/etc/nginx/conf.d’ 、‘/etc/nginx/nginx.conf’
解釋一下‘/etc/nginx/nginx.conf’,因為這個是nginx的主配置,比較重要
輸入命令列
cd /etc/nginx
vim nginx.conf
#運行用戶,默認即是nginx,可以不進行設定
user nginx;
#Nginx行程,一般設定為和CPU核數一樣
worker_processes 1;
#錯誤日志存放目錄
error_log /var/log/nginx/error.log warn;
#行程pid存放位置
pid /var/run/nginx.pid;
events {
worker_connections 1024; # 單個后臺行程的最大并發數
}
http {
include /etc/nginx/mime.types; #檔案擴展名與型別映射表
default_type application/octet-stream; #默認檔案型別
#設定日志模式
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main; #nginx訪問日志存放位置
sendfile on; #開啟高效傳輸模式
#tcp_nopush on; #減少網路報文段的數量
keepalive_timeout 65; #保持連接的時間,也叫超時時間
#gzip on; #開啟gzip壓縮
include /etc/nginx/conf.d/*.conf; #包含的子配置項位置和檔案
再解釋一下主檔案中的子檔案,就是上面這個include下的.conf檔案
進入 '/etc/nginx/conf.d/' 這個檔案夾,再通過vim或者cat打開
server {
listen 80; #配置監聽埠
server_name localhost; //配置域名
#charset koi8-r;
#access_log /var/log/nginx/host.access.log main;
location / {
root /usr/share/nginx/html; #服務默認啟動目錄
index index.html index.htm; #默認訪問檔案
}
#error_page 404 /404.html; # 配置404頁面
redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html; #錯誤狀態碼的顯示頁面,配置后需要重啟
location = /50x.html {
root /usr/share/nginx/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;
#}
}

這里的root表示,專案檔案是放在’/usr/share/nginx/html’下面,那么我們就去看看這里有啥呢

就這倆玩意兒,也就是一個默認的index檔案和報錯的時候會展示的50x.html頁面
通過安全組的配置,允許瀏覽器訪問服務器地址的80埠,下面就是我的騰訊云服務器的默認首頁

安全組的配置會有些復雜,需要一些網路協議的知識,不過騰訊云提供了視頻教程,大家可以看看地址在這里
這里還有一個小問題,就是當你們配置好default.conf的時候,需要重啟nginx才能運行新改的配置,這里在服務器里運行指令 ‘nginx -s reload’ 會報錯‘nginx: [error] open() “/var/run/nginx.pid” failed (2: No such file or directory)’, 這個時候可以如下
// 先輸入
nginx
nginx -s reload
或者是如果你使用iTerm的話,可以配置.bashrc檔案,添加一個alias的配置來簡化運行nginx指令;或者是通過指令 ‘systemctl start nginx.service’ 啟動nginx服務,通過指令 ‘ps aux | grep nginx’ 查看nginx是否是否啟動;還有很多nginx的指令,大家自行去官網查看,這里不多bb了,
五、親手配置404錯誤頁面
打開default.conf檔案進行編輯
添加一個errorpage配置,然后再去配置 /usr/share/nginx/html里面的404_error.html
直接輸入指令’vim 404_error.html’就會直接創建html檔案

保存退出之后,記得重啟一下nginx,然后去瀏覽器隨便輸入一個未知的路徑,就能看到404頁面如下

還能將位置頁面指向另一個網址,default.conf如下設定

重繪剛才的瀏覽器頁面,就會跳轉到百度的首頁去了
六、權限配置
簡單的說,就是我想讓誰能訪問我的服務器,誰禁止訪問我的瀏覽器
關鍵詞是 ‘allow’和’deny’
顧名思義,allow就是允許誰訪問,deny就是禁止誰訪問
首先看看自己的ip地址,通過這個網址來獲取
我的ip地址是’112.10.54.90’,那么我來禁止我的ip訪問服務器
location / {
root /usr/share/nginx/html;
index index.html index.htm;
deny 112.10.54.90;
}
重啟nginx之后,訪問ip地址首頁,結果如下

403禁止訪問
還可以更精準的定位某個路徑下不可訪問,如下設定
location =/admin {
deny all
}
不再演示了,自行操作,光看可不行,請自己多多練習,看別人bb沒用的
七、虛擬主機的設定
三種形式
1、基于埠號配置
2、基于域名配置
3、基于IP配置
作業中一般是不會基于IP配置的,因為哪來那么多錢買那么多IP呢,多數都是通過域名來配置,設定一下二級域名,做一個反向代理啥的,通過埠號也不多,因為我總不能在域名后面加個埠號把,十分難看且不雅,
著重講一講通過域名配置的情況,大家可以去買個域名玩一玩,幾塊幾十塊就有一個屬于自己的船新域名,多的不說,去萬網買一個吧,買完之后,通過決議添加一條記錄如下

域名決議記錄
同理再添加一條記錄,主機記錄命名為nginx2
那么現在我就有兩個二級域名
1、nginx.chennick.wang
2、nginx2.chennick.wang
那么用第一個域名指向默認的nginx首頁,用第二個新建一個虛擬主機

第一個域名的配置

第二個域名的配置

回去設定一下第二個域名的index2.html
index2.html

nginx.chennick.wang

nginx2.chennick.wang
玩到這兒,基本上你也就差不多入門了nginx的配置了
八、Nginx反向代理
反向代理對前端而言,是非常有用的,因為前端的跨域問題跨域通過反向代理來解決,廢話不多說,進入正題,
如何配置反向代理呢,配置如下
server{
listen 80;
server_name nginx2.chennick.wang;
location / {
proxy_pass https://www.baidu.com/;
}
}
上述配置,在瀏覽器訪問nginx2.chennick.wang這個域名的時候,展示的頁面是https://www.baidu.com/的頁面,如下圖所示

反向代理到百度
還有一些對PC端和移動端的判斷,類似瀏覽器的userAgent去判斷,然后根據PC和Mobile回傳不同的站點,這里就不展開多說了,東西都差不多,看檔案就行,
最后再多說一句,小伙伴們一定要自己去親手寫一寫,光蹭一蹭不進去,是不行滴
文章借鑒了胖哥的Nginx系列教程,同學們想看視頻的話可以移步到胖哥那兒看免費視頻教程
一個前端必會的 Nginx免費教程 (共11集)?jspang.com

PS:(補充于2019年9月4日快下班的時候)
在云端服務器配置node環境:
這里推薦大家使用nvm去安裝node,版本隨時可以升級降級,非常友好,不過不建議在服務器隨便升降版本,很危險,,,
具體方法:
1、通過 wget 下載nvm的sh腳本
wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.33.6/install.sh | bash
2、先更新一下bash_profile檔案
source ~/.bash_profile
3、安裝完成以后使用 nvm - v 來測驗安裝是否成功
nvm -v
4、安裝成功以后會顯示版本號和nvm 相關命令等提示
nvm install v12.6.0
nvm use v12.6.0
nvm alias default v12.6.0
然后就能在全域使用npm
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/228069.html
標籤:其他
上一篇:金九銀十面試結束,復盤面試經驗:演算法+框架+Redis+分布式+JVM
下一篇:自動化測驗的Python五大框架
