?????博主簡介
????云計算領域優(yōu)質創(chuàng)作者
????華為云開發(fā)者社區(qū)專家博主
????阿里云開發(fā)者社區(qū)專家博主
??交流社區(qū):運維交流社區(qū) 歡迎大家的加入!
?? 希望大家多多支持,我們一起進步!??
??如果文章對你有幫助的話,歡迎 點贊 ???? 評論 ?? 收藏 ?? 加關注+??
nginx 介紹
在線自動生成nginx配置文件
https://www.digitalocean.com/community/tools/nginx?global.app.lang=zhCN
可以自由選擇所需的應用,生成nginx配置作為參考。
根據(jù)你的業(yè)務需求,自動生成復雜的nginx配置文件,提供你作為參考,非常好用
nginx企業(yè)用它干什么
1.提供靜態(tài)頁面展示,網(wǎng)頁服務
2.提供多個網(wǎng)站、多個域名的網(wǎng)頁服務3.提供反向代理服務(結合動態(tài)應用程序)
4.提供簡單資源下載服務(密碼認證) ftp服務
5.用戶行為分析(日志功能)
nginx的運行架構
nginx運行后,有多少個干活的工人,多進程,調用多個cpu去解析用戶的請求
在linux中進行多進程開發(fā),開辟多個進程,調用多個cpu,當然也會消耗更多的機器資源,內存,cpu資源,給服務器帶來更大的壓力
不是說進程越多,干活越快,合理的分配,才能達到最高效的處理效率
關于nginx的優(yōu)化設置,nginx默認應該啟動多少個進程去工作呢?
默認就是根據(jù)cpu的核數(shù)去設置進程數(shù)即可。
master主進程原理
包工頭進程,管理nginx的數(shù)據(jù),創(chuàng)建worker工作進程。
1. 啟動時檢查nginx.conf是否正確,語法是否有誤;
2. 根據(jù)配置文件的參數(shù)創(chuàng)建、且監(jiān)控worker進程的數(shù)量和狀態(tài);
3. 監(jiān)聽socket,接收client發(fā)起的請求,然后worker競爭搶奪鏈接,獲勝的可以處理且響應請求。
4. 接收我們發(fā)送的管理nginx進程的信號,并且將信號通知到worker進程。
5. 如果我們發(fā)送了reload命令,則讀取新配置文件,創(chuàng)建新的worker進程,結束舊的worker進程。
worker工作進程原理
1. 實際處理client網(wǎng)絡請求的是worker
2. master根據(jù)nginx.conf決定worker的數(shù)量
3. 有client用戶請求到達時,worker之間進程競爭,獲勝者和client建立連接且處理用戶請求;
4. 接收用戶請求后,若需要代理轉發(fā)給后端,則后端處理完畢后接收處理結果,再響應給用戶
5. 接收并處理master發(fā)來的進程信號,如啟動、重啟、重載、停止。
nginx常用模塊介紹
nginx常用模塊官網(wǎng):https://nginx.org/en/docs/
下面講解的常用模塊,官網(wǎng)都有解析是使用方法。
ngx_http_access_module # 四層基于IP的訪問控制,可以通過匹配客戶端源IP地址進行限制,簡單來說就是允許限制對某些客戶端地址的訪問。
ngx_http_auth_basic_module # 允許通過使用“HTTP 基本身份驗證”協(xié)議驗證用戶名和密碼來限制對資源的訪問。
ngx_http_stub_status_module # 狀態(tài)統(tǒng)計模塊。
ngx_http_gzip_module # 文件的壓縮功能,是一個使用“gzip”方法壓縮響應的過濾器。這通常有助于將傳輸數(shù)據(jù)的大小減少一半甚至更多。
ngx_http_gzip_static_module # 靜態(tài)壓縮模塊,允許發(fā)送帶有“ ”文件擴展名的預壓縮文件,.gz而不是常規(guī)文件。
ngx_http_ssl_module # 為HTTPS提供必要的支持
ngx_http_rewrite_module # 重定向功能,解析和處理rewrite請求,用于使用 PCRE 正則表達式更改請求 URI、返回重定向和有條件選擇配置。
ngx_http_referer_module # 防盜鏈功能,用于阻止“Referer”標頭字段中包含無效值的請求訪問站點。
ngx_http_proxy_module # 將客戶端的請求以http協(xié)議轉發(fā)至指定服務器進行處理。
ngx_stream_proxy_module # tcp負載,將客戶端的請求以tcp協(xié)議轉發(fā)至指定服務器處理,允許通過 TCP、UDP (1.9.13) 和 UNIX 域套接字代理數(shù)據(jù)流。
ngx_http_fastcgi_module # 將客戶端對php的請求以fastcgi協(xié)議轉發(fā)至指定服務器理。
ngx_http_uwsgi_module # 將客戶端對Python的請求以uwsgi協(xié)議轉發(fā)至指定服務器處理。
ngx_http_headers_module # 允許將“Expires”和“Cache-Control”標頭字段以及任意字段添加到響應標頭。
ngx_http_upstream_module # 用于定義可由proxy_pass、 fastcgi_pass、 uwsgi_pass、 scgi_pass、 memcached_pa??ss和 grpc_pass指令引用的服務器組。負載均衡模塊,提供服務器分組轉發(fā)、權重分配、狀態(tài)監(jiān)測、調度算法等高級功能。
ngx_stream_upstream_module # 用于定義可由proxy_pass 指令引用的服務器組。
ngx_http_fastcgi_module # 允許將請求傳遞到 FastCGI 服務器。
ngx_http_flv_module # 為 Flash 視頻 (FLV) 文件提供偽流服務器端支持。
nginx的安裝形式
- 源代碼編譯安裝,優(yōu)點:
- 版本,可以獲取官網(wǎng)最新的軟件包,甚至最新測試版,都可以直接編譯安裝
- 還有穩(wěn)定版本
- 自由定義,安裝路徑自由定義,
- 自由定義第三方插件
- 缺點:安裝步驟繁瑣,耗時太長,看你要裝多少個模塊,編譯添加的模塊多,安裝的就更久
- rpm安裝
- 得提前準備好nginx本身的rpm包,以及相關依賴的rpm包
- 用于離線安裝nginx的環(huán)境
- yum安裝,你會用哪些形式的倉庫?
- 阿里云第三方倉庫(centos-base.repo,epel.repo)
- 這個其實都不靠譜。
- 自建yum倉庫(得提前準備好nginx本身的rpm包,以及相關依賴的rpm包)
- nginx官網(wǎng)倉庫(獲取官網(wǎng)最新穩(wěn)定版的yum源倉庫)
- yum一鍵安裝,省心省事,版本也是有一定的保障的,rpm的安全性也是有保障的
- 阿里云第三方倉庫(centos-base.repo,epel.repo)
官網(wǎng)yum倉庫
源代碼編譯
離線的rpm安裝(yum 自建倉庫)
yum安裝nginx
# 1. 配置官網(wǎng)yum源,一鍵安裝即可
cat > /etc/yum.repos.d/nginx.repo << 'EOF'
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
EOF
# 2.清空yum源,安裝最新版nginx
yum clean all
yum install nginx -y
# 3.查看PATH變量
[root@iz0jlfqv8fyt7iuxoec4clz ~]# which nginx
/usr/sbin/nginx
[root@iz0jlfqv8fyt7iuxoec4clz ~]# ll /usr/sbin/nginx
-rwxr-xr-x 1 root root 1399232 Apr 12 01:22 /usr/sbin/nginx
# 4.查看nginx版本
[root@iz0jlfqv8fyt7iuxoec4clz ~]# nginx -V
nginx version: nginx/1.24.0
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC)
built with OpenSSL 1.0.2k-fips 26 Jan 2017
TLS SNI support enabled
configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -fPIC' --with-ld-opt='-Wl,-z,relro -Wl,-z,now -pie'
nginx管理命令
nginx # 默認是直接運行啟動,前提是當前機器沒運行nginx
nginx -t # 檢測nginx.conf語法
nginx -s reload # 重新讀取nginx.conf
nginx -s stop # 停止nginx kill -15 nginx
# systemctl去管理nginx啟動之類的。
#啟動nginx,查看nginx狀態(tài),reload重新加載nginx配置, restart重啟nginx服務,查看進程id號,關閉nginx
[root@iz0jlfqv8fyt7iuxoec4clz ~]# systemctl start nginx
[root@iz0jlfqv8fyt7iuxoec4clz ~]# systemctl status nginx
[root@iz0jlfqv8fyt7iuxoec4clz ~]# systemctl reload nginx # worker變化,master不變
[root@iz0jlfqv8fyt7iuxoec4clz ~]# systemctl restart nginx # 整個nginx進程變化
[root@iz0jlfqv8fyt7iuxoec4clz ~]# systemctl stop nginx
yum 安裝 nginx 所有默認路徑
[root@iz0jlfqv8fyt7iuxoec4clz ~]# rpm -ql nginx
/etc/logrotate.d/nginx
/etc/nginx
/etc/nginx/conf.d
/etc/nginx/conf.d/default.conf
/etc/nginx/fastcgi_params
/etc/nginx/mime.types
/etc/nginx/modules
/etc/nginx/nginx.conf # nginx的配置文件路徑
/etc/nginx/scgi_params
/etc/nginx/uwsgi_params
/usr/lib/systemd/system/nginx-debug.service
/usr/lib/systemd/system/nginx.service
/usr/lib64/nginx
/usr/lib64/nginx/modules
/usr/libexec/initscripts/legacy-actions/nginx
/usr/libexec/initscripts/legacy-actions/nginx/check-reload
/usr/libexec/initscripts/legacy-actions/nginx/upgrade
/usr/sbin/nginx
/usr/sbin/nginx-debug
/usr/share/doc/nginx-1.24.0
/usr/share/doc/nginx-1.24.0/COPYRIGHT
/usr/share/man/man8/nginx.8.gz
/usr/share/nginx
/usr/share/nginx/html
/usr/share/nginx/html/50x.html
/usr/share/nginx/html/index.html
/var/cache/nginx
/var/log/nginx
通過官網(wǎng)yum倉庫默認安裝的nginx.conf配置文件
[root@iz0jlfqv8fyt7iuxoec4clz ~]# cat /etc/nginx/nginx.conf
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log notice;
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;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
include /etc/nginx/conf.d/*.conf;
}
nginx配置模塊詳解
這里的圖是二進制安裝默認的配置,yum安裝的與二進制安裝的nginx,配置會有差異,但整體大概的說明都是一樣的。
主要區(qū)域講解:文章來源:http://www.zghlxwxcb.cn/news/detail-714149.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-714149.html
相關文章
文章標題 | 文章連接 |
---|---|
【Linux】nginx基礎篇 – 介紹及yum安裝nginx | https://liucy.blog.csdn.net/article/details/133928000 |
【Linux】環(huán)境下部署Nginx服務 - 二進制部署方式 | https://liucy.blog.csdn.net/article/details/132145067 |
nginx配置負載均衡–實戰(zhàn)項目(適用于輪詢、加權輪詢、ip_hash) | https://liucy.blog.csdn.net/article/details/133986013 |
nginx快速部署一個網(wǎng)站服務 + 多域名 + 多端口 | https://liucy.blog.csdn.net/article/details/133986102 |
到了這里,關于【Linux】nginx基礎篇 -- 介紹及yum安裝nginx的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!