1. 程式人生 > >Linux redhat 7 nginx 優化 配置

Linux redhat 7 nginx 優化 配置

nginx基本配置 出現 lib 高並發 localhost tex 後臺 nmp htm

nginx基本配置

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包、配置安裝信息、編譯、安裝

    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再將結果返回給客戶端)

    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!!!


nginx優化

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個進程

#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;

#pid logs/nginx.pid;

events {
worker_connections 65535; #每個進程並發連接數默認1024 因為linux系統一個用戶默認最多只能打開1024個文件;所以改好nginx的並發數後還需要更改linux系統默認能打開文件的個數
}
修改linux系統設置所有用戶軟件 硬件打開文件最到數為100000實際上用不到那麽大
vim /etc/security/limits.conf
#<domain> <type> <item> <value>
#

  • soft nofile 100000 #
  • hard nofile 100000

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;
}

Linux redhat 7 nginx 優化 配置