Nginx 入門到實戰,新手必懂~

Java技術棧 2021-08-15 14:15:45 阅读数:108

本文一共[544]字,预计阅读时长:1分钟~
nginx 新手

作者:海島

來源:https://segmentfault.com/a/1190000014893012

一、環境

服務器版本:CentOS 7.2

為了保證學習階段不遇到奇怪的事情,請保證以下四點(大神選擇性無視)

  1. 確認系統網絡
  2. 確認yum可用
  3. 確認關閉iptables
  4. 確認停用selinux
#查看iptables狀態
systemctl status firewalld.service
#關閉防火牆(臨時關閉)
systemctl stop firewalld.service
#查看SELinux狀態
getenforce
#臨時關閉SELinux
setenforce 0

安裝一些系統基本工具,正常情况系統都會自帶(沒有在裝哦)

yum -y install gcc gcc-c++ autoconf pcre pcre-devel make automake
yum -y install wget httpd-tools vim

二、Nginx是什麼?

Nginx是一個開源且高性能、可靠的HTTP中間件、代理服務
其他的HTTP服務:

  1. HTTPD-Apache基金會
  2. IIS-微軟
  3. GWS-Google(不對外開放)

近幾年,Nginx的市場占有率越來越高,一度飆昇,為什麼呢?接下來我們就知道了!

三、我們為什麼選擇Nginx?

1. IO多路複用epoll(IO複用)

如何理解呢?舉個例子吧!
有A、B、C三個老師,他們都遇到一個難題,要幫助一個班級的學生解决課堂作業。
老師A采用從第一排開始一個學生一個學生輪流解答的方式去回答問題,老師A浪費了很多時間,並且有的學生作業還沒有完成呢,老師就來了,反反複複效率極慢。
老師B是一個忍者,他發現老師A的方法行不通,於是他使用了影分身術,分身出好幾個自己同一時間去幫好幾個同學回答問題,最後還沒回答完,老師B消耗光了能量累倒了。
老師C比較精明,他告訴學生,誰完成了作業舉手,有舉手的同學他才去指導問題,他讓學生主動發聲,分開了“並發”。
這個老師C就是Nginx。

2. 輕量級

  • 功能模塊少 - Nginx僅保留了HTTP需要的模塊,其他都用插件的方式,後天添加
  • 代碼模塊化 - 更適合二次開發,如阿裏巴巴Tengine

3. CPU親和

把CPU核心和Nginx工作進程綁定,把每個worker進程固定在一個CPU上執行,减少切換CPU的cache miss,從而提高性能。

三、安裝與目錄

本人使用了鳥哥的lnmp集成包,簡單方便-推薦!

#執行這句語句,根據指引,將安裝 nginx php mysql 可進入lnmp官網查看更詳細的過程
#默認安裝目錄/usr/local
wget -c http://soft.vpser.net/lnmp/lnmp1.4.tar.gz && tar zxf lnmp1.4.tar.gz && cd lnmp1.4 && ./install.sh lnmp
#默認安裝目錄
/usr/local

四、基本配置

#打開主配置文件,若你是用lnmp環境安裝
vim /usr/local/nginx/conf/nginx.conf
----------------------------------------
user #設置nginx服務的系統使用用戶
worker_processes #工作進程數 一般情况與CPU核數保持一致
error_log #nginx的錯誤日志
pid #nginx啟動時的pid
events {
worker_connections #每個進程允許最大連接數
use #nginx使用的內核模型
}

我們使用 nginx 的 http 服務,在配置文件 nginx.conf 中的 http 區域,配置無數個 server ,每一個 server 對應這一個虛擬主機或者域名

http {
... ... #後面再詳細介紹 http 配置項目
server {
listen 80 #監聽端口;
server_name localhost #地址
location / { #訪問首頁路徑
root /xxx/xxx/index.html #默認目錄
index index.html index.htm #默認文件
}
error_page 500 504 /50x.html #當出現以上狀態碼時從新定義到50x.html
location = /50x.html { #當訪問50x.html時
root /xxx/xxx/html #50x.html 頁面所在比特置
}
}
server {
... ...
}
}

一個 server 可以出現多個 location ,我們對不同的訪問路徑進行不同情况的配置
我們再來看看 http 的配置詳情

http {
sendfile on #高效傳輸文件的模式 一定要開啟
keepalive_timeout 65 #客戶端服務端請求超時時間
log_format main XXX #定義日志格式 代號為main
access_log /usr/local/access.log main #日志保存地址 格式代碼 main
}

四、模塊

查看 nginx 已開啟和編聯進去的模塊,模塊太多了,就不在這長篇大論,有需要自行百度吧~

#大寫V查看所有模塊,小寫v查看版本
nginx -V
# 查看此配置文件 是否存在語法錯誤
nginx -tc /usr/local/nginx/conf/nginx.conf

近期熱文推薦:

1.1,000+ 道 Java面試題及答案整理(2021最新版)

2.別在再滿屏的 if/ else 了,試試策略模式,真香!!

3.臥槽!Java 中的 xx ≠ null 是什麼新語法?

4.Spring Boot 2.5 重磅發布,黑暗模式太炸了!

5.《Java開發手册(嵩山版)》最新發布,速速下載!

覺得不錯,別忘了隨手點贊+轉發哦!

版权声明:本文为[Java技術棧]所创,转载请带上原文链接,感谢。 https://gsmany.com/2021/08/20210815141520390u.html