linux下nginx安裝配置

linux下nginx安裝配置

前言

環(huán)境:centos 7.4,nginx 1.12.2

場(chǎng)景:現(xiàn)有一臺(tái)外網(wǎng)輕量級(jí)服務(wù)器瑟枫。dns會(huì)將*.ijianghe.cn這個(gè)根域統(tǒng)統(tǒng)解析成該服務(wù)器的IP。需求如下

  • www.ijianghe.cn

    • 網(wǎng)站主頁(yè)業(yè)務(wù)
    • 對(duì)應(yīng)目錄:/data/wwwsite/www/
      當(dāng)訪問(wèn)www.ijianghe.cn時(shí)加載/data/wwwsite/www/index.html
      當(dāng)訪問(wèn)www.ijianghe.cn/wwwapi/(apiname)時(shí)訪問(wèn)127.0.0.1:9527的本地主頁(yè)nodejs服務(wù)
  • mob.ijianghe.cn

    • 網(wǎng)站移動(dòng)業(yè)務(wù)
    • 對(duì)應(yīng)目錄:/data/wwwsite/mob/
      當(dāng)訪問(wèn)mob.ijianghe.cn時(shí)加載/data/wwwsite/mob/index.html
      當(dāng)訪問(wèn)mob.ijianghe.cn/mobapi/(apiname)時(shí)訪問(wèn)127.0.0.1:9528的本地移動(dòng)端nodejs服務(wù)

nginx安裝部分:

  • 安裝gc++
    yum install gcc-c++
    
  • 安裝PCRE pcre-devel
    yum install -y pcre pcre-devel
    
  • 安裝zlib
    yum install -y zlib zlib-devel
    
  • 安裝OpenSSL
    yum install -y openssl openssl-devel
    
  • 更新下rpm依賴庫(kù)
    rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
    
  • 安裝nginx
    yum -y install nginx
    
  • 啟動(dòng)Nginx
    service nginx start
    curl http://127.0.0.1       #如果出現(xiàn)nginx字樣說(shuō)明nginx啟動(dòng)成功
    

nginx常用命令

  • 查看nginx版本號(hào)

    nginx -v
    
  • 查看nginx配置文件路徑

    nginx -t
    
  • 停止nginx服務(wù)

    nginx -c stop
    
  • 啟動(dòng)nginx服務(wù)

    nginx
    #或者
    service nginx start
    #或者
    start nginx
    
  • 開機(jī)自啟動(dòng)nginx

    vi /etc/rc.local            #增加一行 /usr/sbin/nginx(不同版本在不同路徑下 可用which nginx查看nginx指令在哪)
    chmod 755 rc.local          #設(shè)置權(quán)限755
    

通過(guò)配置nginx來(lái)實(shí)現(xiàn)前言中的需求

  • 準(zhǔn)備日志目錄和項(xiàng)目根目錄

    mkdir /etc/nginx/nginxhost          #在nginx主配置文件同級(jí)目錄新建nginxhost文件夾來(lái)放置nginx虛擬主機(jī)配置
    mkdir /data/logs                    #在開發(fā)目錄下新建logs文件用來(lái)防止nginx的所有日志文件
    
  • 1.編輯nginx主配置文件

    nginx -t                        #查看主配置文件位置
    vi /etc/nginx/nginx.conf        #編輯nginx主配置文件
    
    user  nginx;                    #使用者
    worker_processes  2;            #進(jìn)程數(shù)一遍為cpu核數(shù)的1-2倍
    #worker_cpu_affinity 01 10;     #01表示啟用第一個(gè)CPU內(nèi)核我磁,10表示啟用第二個(gè)CPU內(nèi)核 
    
    events {
        use epoll;
        worker_connections  1024;   #最大連接數(shù)
    }
    
    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  /data/logs/access.log  main;        #輸入日志的名字和路徑   
    
        sendfile        on;
        #tcp_nopush     on;
    
        keepalive_timeout  65;
    
        gzip  on;        #開啟gzip壓縮http傳輸?shù)膬?nèi)容
    
        include /etc/nginx/nginxhost/*.conf;        #使用通配符引入所有虛擬主機(jī)配置文件
    }
    
    
  • 2.配置nginx虛擬主機(jī)配置

    touch /etc/nginx/nginxhost/www.ijianghe.cn.conf;                #新建www.ijianghe.cn的配置文件
    vi /etc/nginx/nginxhost/www.ijianghe.cn.conf;                   #編輯www.ijianghe.cn配置文件
    
    server{
         #入口端口
        listen  80;                                                 
        #入口服務(wù)名可以多寫空格分開
        server_name www.ijianghe.cn  www.test.ijianghe.cn;                              
        #當(dāng)入口為www.ijianghe.cn 80端口時(shí)將根路徑設(shè)置到/data/wwwsite/www路徑
        root /data/wwwsite/www;                                     
    
        #日志文件輸出位置
        access_log  /data/logs/www.ijianghe.cn.log main;            
    
        #off時(shí) url定向?yàn)樵璾rl+目錄名+/ ;
        #on時(shí) url定向?yàn)閟erver_name中第一個(gè)域名+目錄名+/;             
        server_name_in_redirect off;
    
        #目錄為/時(shí)加載root+index路徑下的靜態(tài)資源(也就是/data/wwwsite/www/index.html);
        location / {
            index  index.html;
        }
        
        #= 嚴(yán)格匹配拖叙。如果這個(gè)查詢匹配,那么將停止搜索并立即處理此請(qǐng)求罢荡。
        #~ 為區(qū)分大小寫匹配(可用正則表達(dá)式)
        #!~為區(qū)分大小寫不匹配
        #~* 為不區(qū)分大小寫匹配(可用正則表達(dá)式)
        #!~*為不區(qū)分大小寫不匹配
        #^~ 如果把這個(gè)前綴用于一個(gè)常規(guī)字符串,那么告訴nginx 如果路徑匹配那么不測(cè)試正則表達(dá)式。
        #如果匹配這個(gè)正則將代理權(quán)交給本地9527端口的本地服務(wù)
        location ~ ^/wwwapi/(.*)$ {
            proxy_pass http://127.0.0.1:9527/wwwapi/$1;
        }
    
        #定義錯(cuò)誤提示頁(yè)面
        error_page  404    /404.html;
        
        #禁止訪問(wèn) .htxxx 文件
        location ~ /.ht {
            deny all;
        }
    }
    
    • 2.配置mob.ijianghe.cn.conf(解釋如上一個(gè)配置不贅述)
    touch /etc/nginx/nginxhost/mob.ijianghe.cn.conf;               
    vi /etc/nginx/nginxhost/mob.ijianghe.cn.conf;                   
    
    server{
        listen  80;                  
        server_name mob.ijianghe.cn mob.test.ijianghe.cn;                                
        root /data/wwwsite/mob;                                     
    
        access_log  /data/logs/mob.ijianghe.cn.log main;            
             
        server_name_in_redirect off;
    
        location / {
            index  index.html;
        }
        
        location ~ ^/mobapi/(.*)$ {
            proxy_pass http://127.0.0.1:9528/mobapi/$1;
        }
    
        error_page  404    /404.html;
        
        location ~ /.ht {
            deny all;
        }
    }
    

其他

  • 主配置詳解
    #運(yùn)行用戶
    user nobody;
    #啟動(dòng)進(jìn)程,通常設(shè)置成和cpu的數(shù)量相等
    worker_processes  2;
    #01表示啟用第一個(gè)CPU內(nèi)核逛揩,10表示啟用第二個(gè)CPU內(nèi)核 
    #worker_cpu_affinity 01 10;     
     
    #全局錯(cuò)誤日志及PID文件
    #error_log  logs/error.log;
    #error_log  logs/error.log  notice;
    #error_log  logs/error.log  info;
     
    #pid        logs/nginx.pid;
     
    #工作模式及連接數(shù)上限
    events {
        #epoll是多路復(fù)用IO(I/O Multiplexing)中的一種方式,
        #僅用于linux2.6以上內(nèi)核,可以大大提高nginx的性能
        use   epoll; 
     
        #單個(gè)后臺(tái)worker process進(jìn)程的最大并發(fā)鏈接數(shù)    
        worker_connections  1024;
     
        # 并發(fā)總數(shù)是 worker_processes 和 worker_connections 的乘積
        # 即 max_clients = worker_processes * worker_connections
        # 在設(shè)置了反向代理的情況下柠傍,max_clients = worker_processes * worker_connections / 4  為什么
        # 為什么上面反向代理要除以4麸俘,應(yīng)該說(shuō)是一個(gè)經(jīng)驗(yàn)值
        # 根據(jù)以上條件辩稽,正常情況下的Nginx Server可以應(yīng)付的最大連接數(shù)為:4 * 8000 = 32000
        # worker_connections 值的設(shè)置跟物理內(nèi)存大小有關(guān)
        # 因?yàn)椴l(fā)受IO約束,max_clients的值須小于系統(tǒng)可以打開的最大文件數(shù)
        # 而系統(tǒng)可以打開的最大文件數(shù)和內(nèi)存大小成正比从媚,一般1GB內(nèi)存的機(jī)器上可以打開的文件數(shù)大約是10萬(wàn)左右
        # 我們來(lái)看看360M內(nèi)存的VPS可以打開的文件句柄數(shù)是多少:
        # $ cat /proc/sys/fs/file-max
        # 輸出 34336
        # 32000 < 34336逞泄,即并發(fā)連接總數(shù)小于系統(tǒng)可以打開的文件句柄總數(shù),這樣就在操作系統(tǒng)可以承受的范圍之內(nèi)
        # 所以拜效,worker_connections 的值需根據(jù) worker_processes 進(jìn)程數(shù)目和系統(tǒng)可以打開的最大文件總數(shù)進(jìn)行適當(dāng)?shù)剡M(jìn)行設(shè)置
        # 使得并發(fā)總數(shù)小于操作系統(tǒng)可以打開的最大文件數(shù)目
        # 其實(shí)質(zhì)也就是根據(jù)主機(jī)的物理CPU和內(nèi)存進(jìn)行配置
        # 當(dāng)然喷众,理論上的并發(fā)總數(shù)可能會(huì)和實(shí)際有所偏差,因?yàn)橹鳈C(jī)還有其他的工作進(jìn)程需要消耗系統(tǒng)資源紧憾。
        # ulimit -SHn 65535
    
    }
     
     
    http {
        #設(shè)定mime類型,類型由mime.type文件定義
        include    mime.types;
        default_type  application/octet-stream;
        #設(shè)定日志格式
        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  logs/access.log  main;
     
        #sendfile 指令指定 nginx 是否調(diào)用 sendfile 函數(shù)(zero copy 方式)來(lái)輸出文件到千,
        #對(duì)于普通應(yīng)用,必須設(shè)為 on,
        #如果用來(lái)進(jìn)行下載等應(yīng)用磁盤IO重負(fù)載應(yīng)用赴穗,可設(shè)置為 off憔四,
        #以平衡磁盤與網(wǎng)絡(luò)I/O處理速度,降低系統(tǒng)的uptime.
        sendfile     on;
        #tcp_nopush     on;
     
        #連接超時(shí)時(shí)間
        #keepalive_timeout  0;
        keepalive_timeout  65;
        tcp_nodelay     on;
     
        #開啟gzip壓縮
        gzip  on;
        gzip_disable "MSIE [1-6].";
     
        #設(shè)定請(qǐng)求緩沖
        client_header_buffer_size    128k;
        large_client_header_buffers  4 128k;
     
     
        #設(shè)定虛擬主機(jī)配置
        server {
            #偵聽80端口
            listen    80;
            #定義使用 www.nginx.cn訪問(wèn)
            server_name  www.nginx.cn;
     
            #定義服務(wù)器的默認(rèn)網(wǎng)站根目錄位置
            root html;
     
            #設(shè)定本虛擬主機(jī)的訪問(wèn)日志
            access_log  logs/nginx.access.log  main;
     
            #默認(rèn)請(qǐng)求
            location / {
                #定義首頁(yè)索引文件的名稱
                index index.php index.html index.htm;   
            }
     
            # 定義錯(cuò)誤提示頁(yè)面
            error_page   500 502 503 504 /50x.html;
            location = /50x.html {
            }
     
            #靜態(tài)文件般眉,nginx自己處理
            location ~ ^/(images|javascript|js|css|flash|media|static)/ {
                #過(guò)期30天了赵,靜態(tài)文件不怎么更新,過(guò)期可以設(shè)大一點(diǎn)甸赃,
                #如果頻繁更新柿汛,則可以設(shè)置得小一點(diǎn)。
                expires 30d;
            }
     
            #禁止訪問(wèn) .htxxx 文件
            location ~ /.ht {
                deny all;
            }
     
        }
    }
    
  • 泛域名解析
    server {
        listen       80;
        server_name ~^(.+)?\.domain\.com$;      #通過(guò)正則匹配server_name
        access_log  logs/host.access.log;
        set $sub $1;                            #設(shè)置sub變量
        set $root /www/$1.domain.com;           #設(shè)置web目錄
        set $index index.html;                  #設(shè)置默認(rèn)的index頁(yè)面
        
        if (!-d $root){                         
            set $root /www/domain.com;          #如果沒(méi)匹配域名 使用默認(rèn)根地址
        }    
        
        root $root; 
        
        location / {                            #通過(guò)正則的域名判斷下一步操作
            if ($sub = a){
                set $index login.html;
            }
            if ($sub = b){
                set $index login.html;
            }
            if ($sub = c){
                set $index proxy.php;
            }
            index  $index;
        }       
        
        # 測(cè)試服務(wù)器不緩存圖片和js.css文件
        # location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
        #     expires 10m;
        # }
        # location ~ .*\.(js|css)?$ {
        #     expires 10m;
        # }
    
        location ~ /\.ht {
            deny  all;
        }
    
    }
    
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末埠对,一起剝皮案震驚了整個(gè)濱河市络断,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌项玛,老刑警劉巖貌笨,帶你破解...
    沈念sama閱讀 216,470評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異稍计,居然都是意外死亡躁绸,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)净刮,“玉大人剥哑,你說(shuō)我怎么就攤上這事⊙透福” “怎么了株婴?”我有些...
    開封第一講書人閱讀 162,577評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)暑认。 經(jīng)常有香客問(wèn)我困介,道長(zhǎng),這世上最難降的妖魔是什么蘸际? 我笑而不...
    開封第一講書人閱讀 58,176評(píng)論 1 292
  • 正文 為了忘掉前任座哩,我火速辦了婚禮,結(jié)果婚禮上粮彤,老公的妹妹穿的比我還像新娘根穷。我一直安慰自己,他們只是感情好导坟,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,189評(píng)論 6 388
  • 文/花漫 我一把揭開白布屿良。 她就那樣靜靜地躺著,像睡著了一般惫周。 火紅的嫁衣襯著肌膚如雪尘惧。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,155評(píng)論 1 299
  • 那天递递,我揣著相機(jī)與錄音喷橙,去河邊找鬼。 笑死漾狼,一個(gè)胖子當(dāng)著我的面吹牛重慢,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播逊躁,決...
    沈念sama閱讀 40,041評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼似踱,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了稽煤?” 一聲冷哼從身側(cè)響起核芽,我...
    開封第一講書人閱讀 38,903評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎酵熙,沒(méi)想到半個(gè)月后轧简,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,319評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡匾二,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,539評(píng)論 2 332
  • 正文 我和宋清朗相戀三年哮独,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了拳芙。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,703評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡皮璧,死狀恐怖舟扎,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情悴务,我是刑警寧澤睹限,帶...
    沈念sama閱讀 35,417評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站讯檐,受9級(jí)特大地震影響羡疗,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜别洪,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,013評(píng)論 3 325
  • 文/蒙蒙 一叨恨、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧蕉拢,春花似錦特碳、人聲如沸诚亚。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,664評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)站宗。三九已至闸准,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間梢灭,已是汗流浹背夷家。 一陣腳步聲響...
    開封第一講書人閱讀 32,818評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留敏释,地道東北人库快。 一個(gè)月前我還...
    沈念sama閱讀 47,711評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像钥顽,于是被迫代替她去往敵國(guó)和親义屏。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,601評(píng)論 2 353