Nginx 源碼安裝和簡(jiǎn)單的配置

Nginx 源碼安裝和簡(jiǎn)單的配置

Nginx是一款開(kāi)放源代碼的高性能HTTP服務(wù)器和反向代理服務(wù)器仍源。Nginx以高性能顾犹、高可用竖席、豐富的功能模塊曾棕、簡(jiǎn)單明了的配置文檔以及低資源占用而著稱灯变,采用罪行的網(wǎng)絡(luò)I/O模型殴玛,支持高達(dá)50000個(gè)并發(fā)連接。

寫此篇筆記的時(shí)候添祸,最新版是1.11.2 (http://nginx.org/download/nginx-1.11.2.tar.gz)滚粟,nginx最新版下載鏈接見(jiàn)官網(wǎng)

安裝示例(這里安裝在/usr/local/nginx中):

    wget http://nginx.org/download/nginx-1.11.2.tar.gz
    tar -xzvf nginx-1.11.2.tar.gz -C /usr/src
    # 安裝依賴
    sudo apt-get install gcc libpcre3 libpcre3-dev openssl libssl-dev libssl0.9.8 perl libperl-dev
    cd /usr/src/nginx-1.11.2
    # 以下是一行。刃泌。用于生成makefile凡壤。如果需要添加第三方模塊署尤,使用--add-module=/path/module1的方法編譯
    ./configure --prefix=/usr/local/nginx --with-ipv6 --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gzip_static_module --with-http_perl_module --with-mail --with-mail_ssl_module
    # make是生成在objs目錄中,make install則安裝到prefix所示的目錄中
    make && make install
    # 沒(méi)有錯(cuò)誤出現(xiàn)的話亚侠,就可以進(jìn)入nginx安裝目錄(/usr/local/nginx)配置曹体。

成功安裝后,進(jìn)入/usr/local/nginx硝烂,可以看到4個(gè)目錄:

    root@iZ28xhlm5vhZ:/usr/local/nginx# ll
    total 44
    drwxr-xr-x 11 root   root 4096 Jul 26 10:06 ./
    drwxr-xr-x 12 root   root 4096 Jul 26 10:03 ../
    drwxr-xr-x  2 root   root 4096 Jul 26 10:11 conf/
    drwxr-xr-x  2 root   root 4096 Jul 26 10:03 html/
    drwxr-xr-x  2 root   root 4096 Jul 26 10:07 logs/
    drwxr-xr-x  2 root   root 4096 Jul 26 10:03 sbin/

其中箕别,

  1. conf:放置nginx相關(guān)的配置文件,最核心的是nginx.conf
  2. html:默認(rèn)的網(wǎng)站根目錄
  3. logs:日志文件目錄(訪問(wèn)日志滞谢,錯(cuò)誤日志串稀,運(yùn)行時(shí)的進(jìn)程id cat logs/nginx.pid)
  4. sbin:主程序(nginx)目錄

一些常用的命令(可以寫腳本簡(jiǎn)化管理):

    1、啟動(dòng): /usr/local/nginx/sbin/nginx
    2狮杨、關(guān)閉: /usr/local/nginx/sbin/nginx -s stop
    3母截、重啟: /usr/local/nginx/sbin/nginx -s reload
    4、指定(另外的)配置文件并啟動(dòng)(如果已經(jīng)啟動(dòng)則報(bào)端口占用的錯(cuò)誤): /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/new.conf
    5禾酱、查看pid: cat /usr/local/nginx/logs/nginx.pid微酬,可以用于kill等操作
    6绘趋、查看安裝時(shí)候的參數(shù): /usr/local/nginx/sbin/nginx -V

參考鏈接--如何在安裝成功的nginx中添加未編譯的安裝模塊(nginx添加模塊需要重新編譯nginx颤陶,而不是像Apache一樣配置文件引用動(dòng)態(tài)鏈接庫(kù)):

  1. 下載一個(gè)第三方庫(kù)用于測(cè)試,wget http://labs.frickle.com/files/ngx_cache_purge-2.3.tar.gz陷遮,參考鏈接中是2.0的版本滓走,在我的服務(wù)器make生成的時(shí)候報(bào)錯(cuò)了,于是改成了最新版的2.3
  2. 解壓到主目錄中帽馋,tar -xzvf ngx_cache_purge-2.3.tar.gz -C ~
  3. 進(jìn)入nginx源碼所在的目錄搅方,我的源碼放在/usr/src/nginx中,cd /usr/src/nginx
  4. 查看當(dāng)前的nginx安裝使用了哪一些選項(xiàng)绽族,用于重新編譯姨涡,/usr/local/nginx/sbin/nginx -V,我的選項(xiàng)是 --prefix=/usr/local/nginx --with-ipv6 --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gzip_static_module --with-http_perl_module --with-mail --with-mail_ssl_module
  5. 在選項(xiàng)后添加需要添加的第三方模塊選項(xiàng)吧慢,添加--add-module=/root/ngx_cache_purge-2.3涛漂,注意/root是我的主目錄
  6. (重要的一步!)只需要make生成主程序而不安裝(在此之前可以查看一下objs目錄中的nginx文件的最后修改時(shí)間),make检诗,保證沒(méi)有報(bào)錯(cuò)(看到objs/nginx的最后修改時(shí)間已經(jīng)變化)
  7. 替換啟動(dòng)文件匈仗,cp /usr/local/nginx/sbin;mv nginx nginx.bak;cp /usr/src/nginx-1.11.2/objs/nginx .
  8. 啟動(dòng)或重啟nginx(命令略)

編譯選項(xiàng)參考

配置文件解析

參考鏈接1
參考鏈接2

    # 當(dāng)生成一些文件的時(shí)候,所屬的用戶和組
    user www-data;
    # 啟動(dòng)子進(jìn)程(worker)數(shù)逢慌,可以通過(guò)`ps aux | grep nginx` 查看悠轩,一般設(shè)置成CPU核數(shù)。
    worker_processer 1;
    # 全局錯(cuò)誤日志攻泼,這里的“當(dāng)前目錄”為/usr/local/nginx
    error_log logs/error.log; # 默認(rèn)
    # 保存PID的log
    pid logs/nginx.pid; # 默認(rèn)
    
    # 工作模式和連接數(shù)上限
    events{
        # epoll是多路復(fù)用IO中的一種方式火架,僅用于linux2.6以上的內(nèi)核鉴象,可以大大提高nginx的性能
        use epoll;
        # 單個(gè)worker process進(jìn)程的最大并發(fā)連接數(shù),受系統(tǒng)文件句柄限制何鸡,即`ulimit -a`中open files項(xiàng)
        worker_connections 65535;
    }
    
    # 設(shè)定http服務(wù)器
    http{
        # 設(shè)定mime類型炼列,mime.types為“文件類型定義”文件,“當(dāng)前目錄”為conf/
        include mime.types;
        # 默認(rèn)文件類型
        default_type application/octet-stream;
        
        # 默認(rèn)編碼
        # charset utf-8;
    
        # 反向代理配置音比,可以打開(kāi)proxy.conf看看
        # include proxy.conf;
    
        # fastcgi配置俭尖,可以打開(kāi)fastcgi.conf看看
        # include fastcgi.conf; 
    
        # 定義log文件怎么寫
        log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                          '$status $body_bytes_sent "$http_referer" '
                          '"$http_user_agent" "$http_x_forwarded_for"';
        # 全局訪問(wèn)日志,使用以上定義的main格式
        access_log logs/access.log main;
        # sendfile指令指定nginx是否調(diào)用sendfile函數(shù)[零拷貝方式](http://baike.baidu.com/view/704944.htm)來(lái)輸出文件洞翩。這是一個(gè)提高通信效率但是降低數(shù)據(jù)傳輸速率的函數(shù)稽犁,只有在用來(lái)進(jìn)行下載等應(yīng)用磁盤IO重負(fù)載的應(yīng)用中設(shè)置為off
        sendfile on;
        # 服務(wù)器的響應(yīng)頭部信息產(chǎn)生獨(dú)立的數(shù)據(jù)包發(fā)送,即一個(gè)響應(yīng)頭信息=>一個(gè)包
        tcp_nopush on;
        # 保持連接的超時(shí)時(shí)間
        keepalive_timeout 65;
        # 頁(yè)面壓縮后傳輸更節(jié)省流量
        gzip on;
        # 防止網(wǎng)絡(luò)阻塞
        tcp_nodelay on;
        # 服務(wù)器名字的hash表大小
        # server_names_hash_bucket_size 128;
        # 上傳文件大小限制
        # client_header_buffer_size 32k;
        # 設(shè)定請(qǐng)求緩存
        # large_client_header_buffers 4 64k;
        # client_max_body_size 8m;
        
        # 開(kāi)啟限制IP連接數(shù)的時(shí)候需要使用
        # limit_zone crawler $binary_remote_addr 10m;
    
        # 包含每個(gè)server的配置
        # include /usr/local/nginx/myconf/*.conf;
        
        # server可以include進(jìn)來(lái)骚亿,也可以直接寫在后面已亥,用于定義虛擬主機(jī)。最重要的是字段是server_name和root
        server{
            # 服務(wù)器監(jiān)聽(tīng)端口
            listen 7890;
            # 訪問(wèn)域名
            server_name www.example.com
            # 編碼格式来屠,如果網(wǎng)頁(yè)編碼與此設(shè)置不同虑椎,則將被自動(dòng)轉(zhuǎn)碼,覆蓋全局的編碼俱笛。捆姜。
            # charset koi8-r;
            # 設(shè)置虛擬主機(jī)的訪問(wèn)日志
            # access_log logs/www.example.com.access.log main;
            
            # 對(duì)URL進(jìn)行匹配,訪問(wèn)server_name的時(shí)候進(jìn)入這里
            location / {
                # 網(wǎng)頁(yè)根目錄迎膜,“當(dāng)前目錄”在nginx的安裝目錄泥技,即/usr/local/nginx,可以用絕對(duì)路徑或相對(duì)路徑磕仅,以下的html是相對(duì)安裝目錄
                root html;
                # 默認(rèn)的首頁(yè)文件(有先后順序)珊豹,訪問(wèn)www.example.com則尋找root下的index.html返回,如果找不到榕订,就找index.htm
                index index.html index.htm;
            }
            
            # 設(shè)置錯(cuò)誤代碼對(duì)應(yīng)的錯(cuò)誤頁(yè)面
            # error_page 404 /404.html
            # error_page 500 502 503 504 /50x.html
            
            # 略去配置代理和HTTPS Server
        }
    }

CGI
FastCGI

在Ubuntu上的簡(jiǎn)單的一個(gè)例子

首先在默認(rèn)的網(wǎng)站根目錄下建立虛擬主機(jī)的目錄和文件店茶,然后修改conf/nginx.conf配置并重啟nginx,由于不能用DNS域名解析來(lái)指向server_name劫恒,所以在/etc/hosts下添加本機(jī)DNS記錄贩幻,然后用curl命令來(lái)模擬訪問(wèn)過(guò)程。

建立目錄和網(wǎng)頁(yè)文件

    mkdir /usr/local/nginx/html/{domain,web,example,default}
    echo "domain.com" > /usr/local/nginx/html/domain/index.html
    echo "web.domain.com" > /usr/local/nginx/html/web/index.html
    echo "example.com" > /usr/local/nginx/html/example/index.html
    echo "default" > /usr/local/nginx/html/default/index.html

nginx的配置

    # nginx.conf
    worker_processes  1;
    
    error_log  logs/error.log;
    pid        logs/nginx.pid;
    
    events {
        worker_connections  1024;
    }
    
    http {
        include       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"';
    
    
        sendfile        on;
    
        keepalive_timeout  65;
    
        gzip  on;
    
        server {
            listen       7890;
            server_name  www.domain.com *.domain.com;
    
            access_log  logs/www.domain.com.access.log  main;
    
            location / {
                root   html/domain;
                index  index.html index.htm;
            }
    
            location ~ /\.ht {
                deny  all;
            }
        }
    
        server {
            listen       7890;
            server_name  web.domain.com;
            location / {
                root   html/web;
                index  index.html index.htm;
            }
        }
    
        server {
            listen       7890;
            server_name  www.example.com;
            location / {
                root   html/example;
                index  index.html index.htm;
            }
        }
    
        server {
            listen       7890 default_server;
            location / {
                root   html/default;
                index  index.html index.htm;
            }
        }
    }

重啟nginx兼贸,/usr/local/nginx/sbin/nginx -s reload段直,然后在/etc/hosts添加以下測(cè)試記錄

    # /etc/hosts
    # test nginx
    127.0.0.1 web.domain.com
    127.0.0.1 www.domain.com
    127.0.0.1 test.domain.com
    127.0.0.1 www.example.com
    127.0.0.1 hello.example.com
    127.0.0.1 world.example.com

使用curl來(lái)測(cè)試:

    root@iZ28xhlm5vhZ:~# curl web.domain.com:7890
    web.domain.com
    root@iZ28xhlm5vhZ:~# curl www.domain.com:7890
    domain.com
    root@iZ28xhlm5vhZ:~# curl test.domain.com:7890
    domain.com
    root@iZ28xhlm5vhZ:~# curl www.example.com:7890
    example.com
    root@iZ28xhlm5vhZ:~# curl hello.example.com:7890
    default
    root@iZ28xhlm5vhZ:~# curl world.example.com:7890
    default
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市溶诞,隨后出現(xiàn)的幾起案子鸯檬,更是在濱河造成了極大的恐慌,老刑警劉巖螺垢,帶你破解...
    沈念sama閱讀 211,948評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件喧务,死亡現(xiàn)場(chǎng)離奇詭異赖歌,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)功茴,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,371評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門庐冯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人坎穿,你說(shuō)我怎么就攤上這事展父。” “怎么了玲昧?”我有些...
    開(kāi)封第一講書人閱讀 157,490評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵栖茉,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我孵延,道長(zhǎng)吕漂,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 56,521評(píng)論 1 284
  • 正文 為了忘掉前任尘应,我火速辦了婚禮惶凝,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘犬钢。我一直安慰自己苍鲜,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,627評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布娜饵。 她就那樣靜靜地躺著坡贺,像睡著了一般。 火紅的嫁衣襯著肌膚如雪箱舞。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 49,842評(píng)論 1 290
  • 那天拳亿,我揣著相機(jī)與錄音晴股,去河邊找鬼。 笑死肺魁,一個(gè)胖子當(dāng)著我的面吹牛电湘,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播鹅经,決...
    沈念sama閱讀 38,997評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼寂呛,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了瘾晃?” 一聲冷哼從身側(cè)響起贷痪,我...
    開(kāi)封第一講書人閱讀 37,741評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎蹦误,沒(méi)想到半個(gè)月后劫拢,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體肉津,經(jīng)...
    沈念sama閱讀 44,203評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,534評(píng)論 2 327
  • 正文 我和宋清朗相戀三年舱沧,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了妹沙。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,673評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡熟吏,死狀恐怖距糖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情牵寺,我是刑警寧澤肾筐,帶...
    沈念sama閱讀 34,339評(píng)論 4 330
  • 正文 年R本政府宣布,位于F島的核電站缸剪,受9級(jí)特大地震影響吗铐,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜杏节,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,955評(píng)論 3 313
  • 文/蒙蒙 一唬渗、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧奋渔,春花似錦镊逝、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,770評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至玄渗,卻和暖如春座菠,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背藤树。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,000評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工浴滴, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人岁钓。 一個(gè)月前我還...
    沈念sama閱讀 46,394評(píng)論 2 360
  • 正文 我出身青樓升略,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親屡限。 傳聞我的和親對(duì)象是個(gè)殘疾皇子品嚣,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,562評(píng)論 2 349

推薦閱讀更多精彩內(nèi)容