nginx:俄羅斯人開發的一套輕量級的HTTP服務器,它是一個高性能的HTTP服務器、反向代理服務器同時也是IMAP/POP3/SMTP服務器。它是一套模塊化軟件,根據需求來安裝相應的模塊。
一 源碼安裝部署nginx
1、官網下載nginx源碼包;http://nginx.org(官網)
2、創建用戶(nginx爲了安全需要指定用戶安裝,因爲避免服務器被×××後擁有root權限)
useradd -s /sbin/nologin nginx
3、源碼安裝
(1)、tar解包
tar xf nginx-1.10.3.tar.gz
(2)、./configure 配置
cd nginx-1.10.3
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module
(3)、編譯
make
(4)、安裝
make install
備註: --preifx 指定目錄,--user 指定用戶, --group 指定組 --with-http_ssl_module 支持加密功能 ;具體要安裝要安裝那些模塊需要根據後期要實現什麼功能來定,因爲模塊安裝的越多,空間資源佔用大,漏洞也多,所以需要模塊化安裝。
常用命令:
/usr/local/nginx/sbin/nginx #啓動
/usr/local/nginx/sbin/nginx -s stop #停止
/usr/local/nginx/sbin/nginx -s reload #重新加載配置文件
/usr/local/nginx/sbin/nginx -V #查看nginx安裝信息
爲了後期方便使用需要給nginx做一個軟連接,後期使用命令時就不需要打絕對路徑,直接nginx。
ln -s /usr/local/nginx/sbin/nginx /sbin
安裝過程中如出現報錯信息,根據報錯信息來查看是否缺少依賴包。(gcc、pcre-devel、openssl-devel)
4、啓動nginx訪問測試
nginx #啓動
netstat -nutlp | grep 80
firefox http://nginx服務器地址
netstat命令可以查看系統中啓動的端口信息,該命令常用選項如下:
-a顯示所有端口的信息
-n以數字格式顯示端口號
-t顯示TCP連接的端口
-u顯示UDP連接的端口
-l顯示服務正在監聽的端口信息,如httpd啓動後,會一直監聽80端口
-p顯示監聽端口的服務名稱是什麼(也就是程序名稱)
二 nginx升級
1、官網下載新版本的nginx
2、tar解包
tar xf nginx-1.12.2.tar.gz
3、配置
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module
4、編譯
make
5、備份舊版本nginx,拷貝新版本nginx,並把內存里正在運行的舊版升級
mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginxold
cp /nginx-1.12.2/objs/nginx /usr/local/nginx/sbin/nginx
make upgrade (此命令包含兩層意思:1殺死老版本的軟件,2升級軟件並啓動)
6、檢測
nginx -V
備註:在源碼配置編譯安裝時,必須要在源碼包目錄裏進行。
三 用戶認證
客戶端用戶訪問網頁需要輸入用戶名密碼才能訪問網頁。
配置文件解析
vim /usr/local/nginx/conf/nginx.conf
worker_processes 1; #啓動的進程數量
events {
worker_connections 1024; #1個進程允許1024個人訪問
}
http {
server { #在nginx主配置文件裏面一個server代表一個網站;
listen 80; #監聽80端口
server_name localhost; #網站域名
root html; #網站根目錄
}
}
1、安裝生成用戶名密碼文件的軟件包httpd-tools
yum -y install httpd-tools
htpasswd -c /usr/local/nginx/pass tom #生成叫tom的用戶米和密碼
New password: #輸入密碼
Re-type new password: #再次輸入密碼
cat /usr/local/nginx/pass #查看用戶名和密碼文件
備註:如果要創建多個用戶,此時需要去掉 -c 選項,因爲-c爲創建的意思,如果不去掉-c當前創建的用戶會直接替換原來的用戶名和密碼
2、修改主配置文件
在server_name 下面添加兩行關鍵字
auth_basic "input youinfo"; #認證提示符
auth_basic_user_file "/usr/local/nginx/pass"; #認證密碼文件
3、重新加在nginx
nginx -s reload
4、訪問測試
firefox http://nginx服務器地址
三 虛擬主機
作用:一臺服務器,一個nginx上面可以運行多個網站
三種類型:基於域名,基於端口,基於ip地址
基於域名的虛擬主機原理:
1、修改配置文件,一個server對應一個網站
vim /usr/local/nginx/conf/nginx.conf
http {
server {
listen 80; #監聽80端口
server_name www.a.com; #定義域名
charset utf-8; #網站支持中文(utf-8) 萬國編碼
location / {
root html; #指定網站根目錄
index index.html index.htm; }
}
server {
listen 80; #監聽80端口
server_name www.b.com; #定義域名
location / {
root www; #指定網站根目錄
index index.html index.htm; }
}
}
備註:要實現基於ip或者端口時,直接在配置文件裏面改相應的位置,例如,基於端口 修改listen 8000; 基於ip 修改 listen 192.168.1.2:80 。
另一個網站的頁面文件需要在nginx安裝目錄下創建,要與html同級。
2、創建www文件夾
mkdir /usr/local/nginx/www
在www文件裏面,寫b網站的頁面內容
3、重新加載nginx服務
nginx -s reload
客戶端測試
1、編寫本地域名解析文件
vim /etc/hosts
ip地址 域名 域名
2、打開瀏覽器訪問
四 SSL虛擬主機
通過私鑰和證書對網站進行加密,使用https訪問。
nginx要實現此功能需要安裝 --with-http_ssl_module模塊。
加密算法:
對稱加密:AES、DES 主要應用於單機數據加密,加密和解密的密碼一樣。
非對稱加密:RSA、DSA主要應用於網絡數據加密,加密和解密密碼不一樣。
信息摘要:MD5、sha256,主要應用在數據完整性校驗、數據秒傳等。
1、生成私鑰匙與證書,(私鑰和證書必須放在conf文件下)
openssl genrsa > cert.key #生成私鑰
openssl req -new -x509 -key cert.key > cert.pem #爲cert.key生成證書
2、修改配置文件
vim /usr/local/nginx/conf/nginx.conf
server {
listen 443 ssl;
server_name www.b.com;
ssl_certificate cert.pem; #證書
ssl_certificate_key cert.key; #私鑰
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
root www;
index index.html index.htm;
}
}
3、重新加載nginx
nginx -s reload
客戶端使用https訪問,會發現地址欄裏的域名旁有個×××的鎖。證明已經完成。