nginx (engine x) 是一款由俄羅斯人開發的一款開源的web服務器軟件,nginx能夠做web服務器支持html和php,nginx還能夠作反向代理、負載均衡
nginx 採用源碼包安裝 nginx-1.8.1.tar.gz
1.先用yum安裝依賴包yum - y install gcc pcre-devel openssl-devel zlib-devel make
2.建立一個禁止登錄的用戶nginx,用來做爲啓動niginx的用戶,防止因爲軟件漏洞給系統形成更大的損失。
useradd -s /sbin/nologin nginx
3.解壓tar包、配置安裝信息、編譯、安裝javascript
tar -xf nginx-1.8.1.tar.gz cd nginx-1.8.1 ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module #prefix指定安裝路徑 --with-http_ssl_module是支持https安全網站的模塊若是不須要能夠不用安裝 make&&make install
4.作一個軟連接到nginx的啓動程序,方便之後管理nginx
ln -s /usr/local/nginx/sbin/nginx /usr/sbin/
5.啓動/關閉nginx
啓動 :nginx #請注意重複啓動會報錯 80 端口被佔用會報錯 重啓須要先關閉再啓動沒有restart
關閉 :nginx -s stop
在大多修改配置文件的狀況下,不用重啓nginx,使用重載命令能夠在正常提供服務的狀況下動態加載新的配置文件
6.nginx 做web服務器
通常選擇 LNMP(Linux Nginx Mariadb Php)環境搭建動態網站
須要安裝的軟件包有 php php-mysql mariadb(數據庫客戶端軟件) mariabd-server mariadb-devel php-fpm(該軟件包須要下載,該軟件是php的後臺處理程序使用9000端口 nginx把客戶端請求的php動態頁面發送給php-fpm,通過php-fpm處理返回結果給nginx,nginx再將結果返回給客戶端)php
yum -y install mariadb mariadb-server mariadb-devel php php-mysql rpm -hiv php-fpm-5.4.16-36.el7_1.x86_64.rpm systemctl start php-fpm #啓動php-fpm systemctl status php-fpm #查看php-fpm的運行狀態 systemctl enable php-fpm #設置php-fpm開機自啓
7.修改nginx的配置文件
nginx的配置文件格式是
http{
server{ #定義虛擬機一個server是一個虛擬機
location{ #網站目錄 默認是nginx安裝目錄下的html目錄下
}
}
}
vim /usr/local/nginx/conf/nginx.conf
//只對配置文件做部分截取
server {
listen 80; #監聽80端口默認http的服務端口
server_name localhost; #指定域名
charset utf-8; #中文網站通常設置utf-8編碼以避免出現亂碼
location ~ .php$ {#全部以php結尾的請求轉到這個location處理
root html;#網站目錄
fastcgi_pass 127.0.0.1:9000;#請求轉發給php-fpm處理
fastcgi_index index.php; #默認首頁
#fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
include fastcgi.conf;#倒入一個配置文件該文件都是提供一些變量參數
}
}
8.重載nginx
nginx -s reload
9.能夠寫一個php文件測試php是否能夠正常解析
vim /usr/local/nginx/html/test1.php
<?php
$i="This is a test Page";
echo $i;
?>
10.若是配置正確服務啓動無報錯訪問localhost/test1.php會獲得一個頁面 This is a test Page
11.啓動數據庫服務mariadb
systemctl start mariadb
12.編寫一個數據庫測試php頁面
vim /usr/local/nginx/html/test2.php
<?php
$links=mysql_connect("localhost","root","密碼");
//注意:root爲mysql帳戶名稱,密碼須要修改成實際mysql密碼,無密碼則留空便可
if($links){
echo "link db ok!!!";
}
else{
echo "link db no!!!";
}
?>
13.訪問localhost/test2.php 會顯示link db ok!!!css
1.地址重寫
將訪問a.html轉到 b.html
在localtion中加入
rewrite /a.html /b.html;
將全部訪問轉到其餘域名
在localtion以前server中加入
rewrite ^/ http://www.tmooc.cn/;
將全部訪問轉到其餘域名保持訪問的子目錄不變
在localtion以前server中加入(使用正則在此正則和shell中正則有些不一樣\1使用$1)
rewrite ^/(.*) http://www.tmooc.cn/$1;
2.高併發
nginx默認啓動一個進程,1024個併發
worker_processes 4; #進程數和cpu核心數須要保持一致;4核cpu能夠啓動4個進程html
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;java
#pid logs/nginx.pid;mysql
events {
worker_connections 65535; #每一個進程併發鏈接數默認1024 由於linux系統一個用戶默認最多隻能打開1024個文件;因此改好nginx的併發數後還須要更改linux系統默認能打開文件的個數
}
修改linux系統設置全部用戶軟件 硬件打開文件最到數爲100000實際上用不到那麼大
vim /etc/security/limits.conf
#<domain> <type> <item> <value>
#linux
3.客戶端緩存
通常緩存都時緩存靜態內容如html css xml jpg png 等等
在server 裏再加一個location匹配靜態文件格式 定義客戶端緩存
location ~* .(jpg|jpeg|gif|png|css|js|ico|xml)$ {
expires 30d; //定義客戶端緩存時間爲30天
}
4.啓用壓縮傳輸,當下全部的瀏覽器都支持解壓,我門開啓nginx服務器壓縮會減少傳輸內容的大小;可是要注意通常不要壓縮多媒體文件如歌曲;視頻;圖片;以及太小的文件;由於壓縮過程當中會在文件中加入壓縮信息過小的文件在壓縮後反而會更大,多媒體文件自己就是壓縮文件再壓縮也時給他們再加一層包裝除了變大外還要消耗大量服務器資源
http {
server_tokens off; //不顯示nginx版本號信息 防止***使用版本漏洞發起***
client_header_buffer_size 1k; //默認請求包頭信息的緩存 當訪問地址過長1k緩存不夠時會報錯,客戶體驗不夠好
large_client_header_buffers 4 4k; //將這種超過1k的大請求包頭部信息的緩存個數與容量調整爲4個4k 合集16k 正常狀況下的請求都不會超過這個大小了
gzip on; //啓用gzip壓縮
gzip_min_length 1000; //小於1000字節的文件不壓縮
gzip_comp_level 4; //設在壓縮級別壓縮級別爲1-9 壓縮級別越高壓縮消耗資源越大 ,通常取4-5級別折中比較合適
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;//啓用壓縮的文件類型 具體格式參數參照 /usr/local/nginx/conf/mime.types文件
......
}
5.自定義錯誤頁面提升體驗度
error_page 404 /404.html; //自定義錯誤頁面到網站根目錄下的一個404頁面代替默認的404錯誤
location = /404.html {
root html;
}nginx