當前位置:首頁 » 編程軟體 » nginx源碼編譯安裝

nginx源碼編譯安裝

發布時間: 2023-04-18 07:57:49

A. nginx編譯安裝慢

nginx編譯安裝慢優化步驟:
1、利用包管理器直接安裝,也是新手最簡單的安裝方式。
2、源碼包編譯安裝。源碼包編譯安裝的有點就是靈活,擴展方便,性能要比直接包管理器安裝要好,對於很多人說的包管理器安裝無法安裝最新版、無法升級到最新版等問題,不存在。

B. nginx 編譯安裝詳解

編譯自:
http://nginx.org/en/docs/install.html
https://www.nginx.com/resources/wiki/start/topics/tutorials/installoptions/

如果需要特別的功能,可進行編譯安裝:

源碼包中提供 configure 腳本用於編譯前定義 nginx 各方面的配置毀游頌。
執行 configure 腳本最後生成 Makefile,make 命令根據 Makefile 進行編譯安裝磨敏。

configure 命令支持如下參數:

--prefix=path

--sbin-path=path

--conf-path=path

--pid-path=path

--error-log-path=path

--http-log-path=path

--user=name

--group=name

--with-select_mole
--without-select_mole

--with-poll_mole
--without-poll_mole

--without-http_gzip_mole

--without-http_rewrite_mole

--without-http_proxy_mole

--with-http_ssl_mole

--with-pcre=path

--with-pcre-jit

--with-zlib=path

--with-cc-opt=parameters

--with-ld-opt=parameters

Example of parameters usage (all of this needs to be typed in one line):

配置完成後,使用 make 命令編譯安裝 nginx。

版權信息 :
本文編譯自纖鄭 nginx.org 的部分,遵循其原來的 licence 聲明: 2-clause BSD-like license

本文亦有部分編譯自 nginx.com

C. linux系統中編譯安裝Nginx伺服器,看了還不會你來打我

使用yum安裝方式安裝PCRE:

yum安裝後檢查安裝結果:

使用yum安裝openssl-devel:

檢查yum安裝結果:

在確保Nginx編譯安裝所依賴的pcre-devel和openssl-devel已經安裝好了後,可以下載Nginx源碼進行編譯安裝。 Nginx源碼可以從Nginx官方網站(http://nginx.org)找到相應版本源碼的下載地址: http://nginx.org/download/nginx-1.16.0.tar.gz

下載Nginx源碼:

添加nginx用戶,服務於Nginx:

解壓軟體包:

編譯Ngixn源碼並安裝:

建立nginx應用程序軟鏈接:

啟動前為了避免報錯,先檢查配置文件語法:

啟動Nginx服務:

查看Nginx服務是否啟動成功:

說明已經啟動成功,打開瀏覽器輸入http://127.0.0.1/就可以看到nginx網頁信息。

D. yum安裝nginx

在 /etc/yum.repo.d/ 下新建一個nginx.repo,加入nginx官方提供的源

注意其中的 <OS> 為系統名, <OSRELEASE> 為系統大版本

比如在CentOS7.2下安裝,要使用如下配置

直接安裝會鍵姿安裝當前的改亮謹最新版本

該源倉庫下有多個版本的nginx可供安裝,可以用如下命令查看

選擇其中一個版本安裝

yum安裝的優點是快,簡單。不用解決依賴、環境問題。缺點是可定製性不核基強,需要更多模塊的可以使用源碼編譯安裝,參考 這篇文章

https://docs.nginx.com/nginx/admin-guide/installing-nginx/installing-nginx-open-source/?_ga=2.21400255.524425478.1586398889-624603394.1586398889#prebuilt_redhat

E. Keepalived+Nginx+Memcached構架高可用

假設場景:

web應用伺服器1 : 192.168.21.21:8001

web應用伺服器2 : 192.168.21.22:8001

需要虛擬出IP:192.168.21.201:8805

解決方案:

在web1和web2上部署同樣的兩套應用程序,埠號都為8001.

在web1和web2上部署nginx,nginx使用集群方式,將請求到的8805埠分發到集群伺服器上。

在web1和web2上部署keepalived,keepalived配置虛擬ip:192.168.21.201

在web1和web2上部署Memcached,進行session復制。

實際路由:

外部訪問192.168.21.201:8805,keepalived監聽到後,確認分發到哪一台nginx。nginx通過箭筒8805埠,使用集群策略,再分發到具體伺服器。

nginx依賴openssl、pcre、zlib。

nginx具體安裝方案查看: Linux系統 - 源碼編譯安裝Nginx

或者通過源碼編譯方式:

假設web1為主機,web2為備份機。

編輯web1的keepalived的配置文件:

編輯web2的keepalived的配置文件:

兩台伺服器的nginx配置一樣

說明虛擬IP配置成功

沒有虛擬IP地址,說明主機良好的狀態下,備份機沒有接管。

在兩台伺服器上都裝上Memcached。
memcached需要依賴libevent:

其中n1和n2 即需要負載的機器上所裝memcached的ip和埠。如家政的iFly-Housekeep項目需要
192.168.21.21和192.168.21.22兩台機器,這兩台上都需要安裝memcached,埠都為11211

最近在把之前寫在印象筆記里的一些壓箱底的資料發布出來,這一篇是16年時候寫的。。

F. 安全開發運維必備的Nginx代理Web伺服器性能優化與安全加固配置

為了更好的指導部署與測試藝術升系統nginx網站伺服器高性能同時下安全穩定運行,需要對nginx服務進行調優與加固;

本次進行Nginx服務調優加固主要從以下幾個部分:

本文檔僅供內部使用,禁止外傳,幫助研發人員,運維人員對系統長期穩定的運行提供技術文檔參考。

Nginx是一個高性能的HTTP和反向代理伺服器,也是一個IMAP/POP3/SMTP伺服器。Nginx作為負載均衡伺服器, Nginx 既可以在內部直接支持 Rails 和 php 程序對外進行服務,也可以支持作為 HTTP代理伺服器對外進行服務。

Nginx版本選擇:

項目結構:



Nginx文檔幫助: http://nginx.org/en/docs/
Nginx首頁地址目錄: /usr/share/nginx/html
Nginx配置文件:



localtion 請求匹配的url實是一個正則表達式:

Nginx 匹配判斷表達式:

例如,匹配末尾為如下後綴的靜態並判斷是否存在該文件, 如不存在則404。



查看可用模塊編譯參數:http://nginx.org/en/docs/configure.html



http_gzip模塊
開啟gzip壓縮輸出(常常是大於1kb的靜態文件),減少網路傳輸;



http_fastcgi_mole模塊
nginx可以用來請求路由到FastCGI伺服器運行應用程序由各種框架和PHP編程語言等。可以開啟FastCGI的緩存功能以及將靜態資源進行剝離,從而提高性能。



keepalive模塊
長連接對性能有很大的影響,通過減少CPU和網路開銷需要開啟或關閉連接;



http_ssl_mole模塊
Nginx開啟支持Https協議的SSL模塊

Linux內核參數部分默認值不適合高並發,Linux內核調優,主要涉及到網路和文件系統、內存等的優化,

下面是我常用的內核調優配置:



文件描述符
文件描述符是操作系統資源,用於表示連接、打開的文件,以及其他信息。NGINX 每個連接可以使用兩個文件描述符。
例如如果NGINX充當代理時,通常一個文件描述符表示客戶端連接,另一個連接到代理伺服器,如果開啟了HTTP 保持連接,這個比例會更低(譯註:為什麼更低呢)。

對於有大量連接服務的系統,下面的設置可能需要調整一下:



精簡模塊:Nginx由於不斷添加新的功能,附帶的模塊也越來越多,建議一般常用的伺服器軟體使用源碼編譯安裝管理;

(1) 減小Nginx編譯後的文件大小



(2) 指定GCC編譯參數
修改GCC編譯參數提高編譯優化級別穩妥起見採用 -O2 這也是大多數軟體編譯推薦的優化級別。

GCC編譯參數優化 [可選項] 總共提供了5級編譯優化級別:



常用編譯參數:



緩存和壓縮與限制可以提高性能
NGINX的一些額外功能可用於提高Web應用的性能,調優的時候web應用不需要關掉但值得一提,因為它們的影響可能很重要。

簡單示例:



1) 永久重定向

例如,配置 http 向 https 跳轉 (永久)



nginx配置文件指令優化一覽表



描述:Nginx因為安全配置不合適導致的安全問題,Nginx的默認配置中存在一些安全問題,例如版本號信息泄露、未配置使用SSL協議等。
對Nginx進行安全配置可以有效的防範一些常見安全問題,按照基線標准做好安全配置能夠減少安全事件的發生,保證採用Nginx伺服器系統應用安全運行;

Nginx安全配置項:

溫馨提示: 在修改相應的源代碼文件後需重新編譯。

設置成功後驗證:



應配置非root低許可權用戶來運行nginx服務,設置如下建立Nginx用戶組和用戶,採用user指令指運行用戶

加固方法:



我們應該為提供的站點配置Secure Sockets Layer Protocol (SSL協議),配置其是為了數據傳輸的安全,SSL依靠證書來驗證伺服器的身份,並為瀏覽器和伺服器之間的通信加密



不應使用不安全SSLv2、SSLv3協議即以下和存在脆弱性的加密套件(ciphers), 我們應該使用較新的TLS協議也應該優於舊的,並使用安全的加密套件。



HTTP Referrer Spam是垃圾信息發送者用來提高他們正在嘗試推廣的網站的互聯網搜索引擎排名一種技術,如果他們的垃圾信息鏈接顯示在訪問日誌中,並且這些日誌被搜索引擎掃描,則會對網站排名產生不利影響
加固方法:



當惡意攻擊者採用掃描器進行掃描時候利用use-agent判斷是否是常用的工具掃描以及特定的版本,是則返回錯誤或者重定向;



Nginx支持webdav,雖然默認情況下不會編譯。如果使用webdav,則應該在Nginx策略中禁用此規則。
加固方法: dav_methods 應設置為off



當訪問一個特製的URL時,如"../nginx.status",stub_status模塊提供一個簡短的Nginx伺服器狀態摘要,大多數情況下不應啟用此模塊。
加固方法:nginx.conf文件中stub_status不應設置為:on



如果在瀏覽器中出現Nginx自動生成的錯誤消息,默認情況下會包含Nginx的版本號,這些信息可以被攻擊者用來幫助他們發現伺服器的潛在漏洞
加固方法: 關閉"Server"響應頭中輸出的Nginx版本號將server_tokens應設置為:off



client_body_timeout設置請求體(request body)的讀超時時間。僅當在一次readstep中,沒有得到請求體,就會設為超時。超時後Nginx返回HTTP狀態碼408(Request timed out)。
加固方法:nginx.conf文件中client_body_timeout應設置為:10



client_header_timeout設置等待client發送一個請求頭的超時時間(例如:GET / HTTP/1.1)。僅當在一次read中沒有收到請求頭,才會設為超時。超時後Nginx返回HTTP狀態碼408(Request timed out)。

加固方法:nginx.conf文件中client_header_timeout應設置為:10



keepalive_timeout設置與client的keep-alive連接超時時間。伺服器將會在這個時間後關閉連接。

加固方法:nginx.conf文件中keepalive_timeout應設置為:55



send_timeout設置客戶端的響應超時時間。這個設置不會用於整個轉發器,而是在兩次客戶端讀取操作之間。如果在這段時間內,客戶端沒有讀取任何數據,Nginx就會關閉連接。

加固方法:nginx.conf文件中send_timeout應設置為:10



GET和POST是Internet上最常用的方法。Web伺服器方法在RFC 2616中定義禁用不需要實現的可用方法。

加固方法:



limit_zone 配置項限制來自客戶端的同時連接數。通過此模塊可以從一個地址限制分配會話的同時連接數量或特殊情況。

加固方法:nginx.conf文件中limit_zone應設置為:slimits $binary_remote_addr 5m



該配置項控制一個會話同時連接的最大數量,即限制來自單個IP地址的連接數量。

加固方法:nginx.conf 文件中 limit_conn 應設置為: slimits 5



加固方法:





加固方法:



解決辦法:





描述後端獲取Proxy後的真實Client的IP獲取需要安裝--with-http_realip_mole,然後後端程序採用JAVA(request.getAttribute("X-Real-IP"))進行獲取;



描述: 如果要使用geoip地區選擇,我們需要再nginx編譯時加入 --with-http_geoip_mole 編譯參數。



描述: 為了防止外部站點引用我們的靜態資源,我們需要設置那些域名可以訪問我們的靜態資源。



描述: 下面收集了Web服務中常規的安全響應頭, 它可以保證不受到某些攻擊,建議在指定的 server{} 代碼塊進行配置。



描述: 為了防止某些未備案的域名或者惡意鏡像站域名綁定到我們伺服器上, 導致伺服器被警告關停,將會對業務或者SEO排名以及企業形象造成影響,我們可以通過如下方式進行防範。

執行結果:



描述: 有時你的網站可能只需要被某一IP或者IP段的地址請求訪問,那麼非白名單中的地址訪問將被阻止訪問, 我們可以如下配置;



常用nginx配置文件解釋:

(1) 阿里巴巴提供的Concat或者Google的PageSpeed模塊實現這個合並文件的功能。



(2) PHP-FPM的優化
如果您高負載網站使用PHP-FPM管理FastCGI對於PHP-FPM的優化非常重要



(3) 配置Resin on Linux或者Windows為我們可以打開 resin-3.1.9/bin/httpd.sh 在不影響其他代碼的地方加入:-Dhttps.protocols=TLSv1.2, 例如

原文地址: https://blog.weiyigeek.top/2019/9-2-122.html

G. 編譯安裝nginx和yum安裝nginx有什麼區別

如果真的要說區別的話,源碼編譯安裝可以在各個linux系統下使用,而yum安裝只能在redhat或centos系統使用,其它系統例如ubuntu,freebsd是不可用的。另外yum安裝的nginx版本偏低,而源碼包是可以獲取官方最新的發行版本的。

H. 怎麼編譯安裝nginx1.8.1

要編譯安裝Nginx,首先我們要安裝依賴包 pcre-devel 和 zlib-devel:
# yum install pcre-devel zlib-devel -y
程序默認是使用 nobody 身份運行的,我們建議使用 nginx 用戶來運行,首先添加Nginx組和用戶,不創建家目錄,不允許登陸系統
# groupadd nginx
# useradd -M -s /sbin/nologin -g nginx nginx

准備工作完成後就是下載編譯安裝Nginx了,可以從我提供的網盤下載,也可以去Nginx的官網下載。
首先解壓源碼包:
# tar xf nginx-1.4.4.tar.gz
然後 cd 到解壓後的目錄就可以執行 ./configure 了
# cd nginx-1.4.4
指定安裝目錄和運行時用的屬主和屬組,並啟用狀態監控模塊等
# ./configure \
--prefix=/usr/local/nginx \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--user=nginx \
--group=nginx \
--with-http_ssl_mole \
--with-http_flv_mole \
--with-http_stub_status_mole \
--with-http_gzip_static_mole \
--http-client-body-temp-path=/var/tmp/nginx/client/ \
--http-proxy-temp-path=/var/tmp/nginx/proxy/ \
--http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ \
--http-uwsgi-temp-path=/var/tmp/nginx/uwsgi \
--http-scgi-temp-path=/var/tmp/nginx/scgi \
--with-pcre
等配置完成後就可以 make && make install 了
# make && make install
# mkdir /var/tmp/nginx/client/ -pv

等編譯安裝完成後在 /usr/local 下就會出現 Nginx 這個目錄了,進入這個目錄後發現目錄非常簡單。它的配置文件存放在 conf 目錄中,網頁文件存放在 html 中,日誌文件存放在 logs 中,sbin 目錄下只有一個可執行程序 "nginx"
接下來我們簡單的為它提供一個服務腳本吧!
# vim /etc/init.d/nginx
新建文件/etc/rc.d/init.d/nginx,內容如下:
#!/bin/bash
# chkconfig:235 85 15
# description: Nginx is an HTTP server
. /etc/rc.d/init.d/functions
start() {
echo "Start..."
/usr/local/nginx/sbin/nginx &> /dev/null
if [ $? -eq 0 ];then
echo "Start successful!"
else
echo "Start failed!"
fi
}

stop() {
if killproc nginx -QUIT ;then
echo "Stopping..."
fi
}

restart() {
stop
sleep 1
start
}

reload() {
killproc nginx -HUP
echo "Reloading..."
}

configtest() {
/usr/local/nginx/sbin/nginx -t
}

case $1 in
start)
start ;;
stop)
stop ;;
restart)
restart ;;
reload)
reload ;;
configtest)
configtest ;;
*)
echo "Usage: nginx {start|stop|restart|reload|configtest}"
;;
esac

之後給這個文件可執行許可權:
# chmod +x /etc/init.d/nginx
好了,現在可以使用 start,stop 這些參數控制Nginx服務了

由於腳本是我自己寫的,還有許多不盡人意的地方,歡迎大家修改和完善!
現在我們就試試啟動服務看看效果吧:
# service nginx start
記得關閉 SElinux 和 iptables 防火牆哦,
# service iptables stop
# setenforce 0
接下來就在瀏覽器中訪問你服務的IP看看效果吧!是不是出項了歡迎的字樣呢

接下來就研究下 Nginx 的配置文件吧!
# vim /usr/local/nginx/conf/nginx.conf
各項參數的意義如下:
worker_processes 1; 工作進程數量

error_log logs/error.log; 日誌文件位置
pid logs/nginx.pid; pid文件位置
worker_connections 1024; 沒進程的連接數
listen 80; 監聽埠
server_name localhost; 主機名
root html; 網站根目錄
index index.html index.htm; 網站索引頁
error_page 500 502 503 504 /50x.html; 訪問錯誤頁面
剩下的其他被注釋掉的代碼塊:
location ~ \.php$ { . . . . . . } 對PHP的支持,需要安裝PHP
server { . . . . . . } 添加server代碼塊能添加虛擬主機
剩下還有監聽443埠的超文本傳輸安全協議 HTTPS server 需要在編譯Nginx時添加ssl的支持

接下來我們試著添加一台虛擬主機吧,虛擬主機的添加可以基於埠,可以基於IP,也可以基於主機名,我們挨個來看看:
基於埠:
首先編輯配置文件,添加server代碼塊,記得要寫到http{ . . . . . . }這個大的代碼塊中。
server {
listen 8080;
server_name localhost;

location / {
root /var/www/html;
index index.html index.htm;
}
}
這樣就添加了一個監聽8080埠的服務,你也可以定義自己喜歡的埠哦。
接下來檢查下配置文件有沒有問題,如果最後一個單詞顯示successful就代表沒問題了,可以重新啟動Nginx了
# service nginx configtest
# service nginx restart
接下來就給第二個虛擬主機寫一個index吧!首先創建目錄
# mkdir -pv /var/www/html
# echo '<h1>Hi! This is 8080!</h1>' > /var/www/html/index.html
好了 接下來試著在瀏覽器中訪問訪問,記得第二個主機要加上埠訪問哦

現在試著用不同的IP建立虛擬主機吧!我們可以在一塊網卡上綁定多個IP地址的方式來實現
# ifconfig eth0:0 10.0.0.4/8
記得把IP換成你自己的哦!然後ifconfig看看是不是多出來一個網卡IP了呢
讓後繼續修改配置文件,這回要修改兩個地方,一個是原本自帶的站點的 listen 項,一個是自己添加的站點的 listen 項。
基於IP:
server {
listen 10.0.0.3:80;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
}

server {
listen 10.0.0.4:80;
server_name localhost;

location / {
root /var/www/html;
index index.html index.htm;
}
}
讓他們只監聽不同的IP,用相同的埠

接下來再瀏覽器上用不同的IP來訪問試試吧,及的還得重啟Nginx,先檢查一下,出現錯誤了看看哪裡配置的不對,然後就可以重啟了。
# service nginx congiftest
# service nginx restart
如果配置給網卡的第二個IP不想要了,把它停掉就可以了
# ifconfig eth0:0 down
再 ifconfig 看看是不是沒有了呢

現在試試用不同的主機名吧!也是企業用的最多的方式。我們把兩個站點的listen項都改為80,然後修改service_name項為定義的主機名
基於主機名:

server {
listen 80;
server_name ybmq.com;

location / {
root html;
index index.html index.htm;
}
}

server {
listen 80;
server_name zhzz.com;

location / {
root /var/www/html;
index index.html index.htm;
}
}

然後重啟Nginx吧!

可是我們在瀏覽器上怎麼通過域名訪問呢?要知道我們訪問 啊,qq 啊之類的是通過DNS伺服器的,難道我們還要配置一台DNS伺服器?其實不然,我們通過修改客戶機的 hosts 文件就可以了。hosts文件是一個本地的域名解析文件,我們要解析哪些域名只要把域名和對應的IP寫到一起就可以了。在Windows XP之後的系統中,這個文件位於:
C:\Windows\System32\drivers\etc\hosts
我們用文本編輯器打開,添加兩個相同的IP對應的兩個不同的主機名就可以了。
如下圖所示

如果你打開這個文件發現已經有很多IP地址了,可以直接在最後加入這兩行,也可以直接清空這個文件,不會有什麼問題的。這個文件的用途還可以屏蔽一些網站哦,只需要把網址對於的IP改為 127.0.0.1 也就是本地回環地址,瀏覽器查詢域名對應的IP時時先通過查詢這個文件的,如果查詢到了,不管對錯都不會訪問DNS伺服器了,所以我們給它一個錯誤的地址,那它一輩子也打不開被屏蔽掉的網站了。
好了 接下來就在瀏覽器中試試用用域名訪問你的兩個站點吧。
如果大家還用IP訪問會是什麼情況呢?我不說了,大家還是自己測試吧 哈哈o(^▽^)o

I. centos7怎麼編譯安裝nginx1.95+mariadb10.1+php7

如果雹氏你nginx是rpm包安裝的,直接用如下命令: nginx -V 如果你是源碼包編譯安裝,假如你的安裝路徑是/usr/local/nginx,那麼你可以使用: /usr/local/nginx/sbin/nginx -V 注意是大寫的V,源皮散這握磨樣你就可以看到nginx已經載入的模塊了。

J. 如何在CentOS 6上通過YUM安裝Nginx和PHP-FPM

yum 裡面是沒有nginx的。所以你要在答肆哪官網下載源清碼碼包進行編譯安裝。官網下載地址是雹襪http:// nginx.org/en/download.html
php-fpm是可以通過yum安裝的,你可以使用:
yum install php-fpm -y

熱點內容
php獲取幾 發布:2025-07-14 20:22:20 瀏覽:376
舊安卓如何刷入最新安卓 發布:2025-07-14 20:16:14 瀏覽:763
伺服器或網路不給力是什麼意思 發布:2025-07-14 20:15:36 瀏覽:318
爬網站資料庫 發布:2025-07-14 20:15:20 瀏覽:520
邵雍的演算法 發布:2025-07-14 20:13:49 瀏覽:119
離線燒錄加密 發布:2025-07-14 20:12:13 瀏覽:619
奧迪怎麼查配置 發布:2025-07-14 20:12:07 瀏覽:832
java視頻編程 發布:2025-07-14 19:49:22 瀏覽:524
初始密碼是多少年 發布:2025-07-14 19:34:12 瀏覽:240
ipadair2存儲 發布:2025-07-14 19:26:58 瀏覽:620