成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Nginx 一點(diǎn)一滴 02 - 基礎(chǔ)配置

qylost / 3041人閱讀

摘要:經(jīng)過認(rèn)證之后沒有過期時(shí)間,直到該頁面關(guān)閉如果需要更多的控制,可以使用服務(wù)器基礎(chǔ)配置實(shí)例測(cè)試的訪問測(cè)試的訪問

Nginx服務(wù)器基礎(chǔ)配置指令 nginx.conf文件的結(jié)構(gòu)

Global: nginx運(yùn)行相關(guān)

events: 與用戶的網(wǎng)絡(luò)連接相關(guān)

http

http Global: 代理,緩存,日志,以及第三方模塊的配置

server

server Global: 虛擬主機(jī)相關(guān)

location: 地址定向,數(shù)據(jù)緩存,應(yīng)答控制,以及第三方模塊的配置

  

所有的所有的所有的指令,都要以;結(jié)尾

配置運(yùn)行Nginx服務(wù)器用戶(組)

user nobody nobody;

配置允許生成的worker process數(shù)

worker_processes auto;
worker_processes 4;

  

這個(gè)數(shù)字,跟電腦CPU核數(shù)要保持一致

ganiks ?  Nginx git:(master) ? grep ^proces /proc/cpuinfo
processor       : 0
processor       : 1
processor       : 2
processor       : 3
ganiks ?  Nginx git:(master) ? grep ^proces /proc/cpuinfo | wc -l
4
配置Nginx進(jìn)程PID存放路徑

pid logs/nginx.pid;

  

這里面保存的就是一個(gè)數(shù)字,nginx master 進(jìn)程的進(jìn)程號(hào)

配置錯(cuò)誤日志的存放路徑

error_log logs/error.log;
error_log logs/error.log error;

配置文件的引入

include mime.types;
include fastcgi_params;
include ../../conf/*.conf;

設(shè)置網(wǎng)絡(luò)連接的序列化

accept_mutex on;

  

對(duì)多個(gè)nginx進(jìn)程接收連接進(jìn)行序列化,防止多個(gè)進(jìn)程對(duì)連接的爭搶(驚群)

設(shè)置是否允許同時(shí)接收多個(gè)網(wǎng)絡(luò)連接

multi_accept off;

事件驅(qū)動(dòng)模型的選擇

use select|poll|kqueue|epoll|rtsig|/dev/poll|eventport

  

這個(gè)重點(diǎn),后面再看

配置最大連接數(shù)

worker_connections 512;

定義MIME-Type

include mime.types;
default_type application/octet-stream;

自定義服務(wù)日志

access_log logs/access.log main;
access_log off;

配置允許sendfile方式傳輸文件

sendfile off;

sendfile on;
sendfile_max_chunk 128k;

  

nginx 每個(gè)worker process 每次調(diào)用 sendfile()傳輸?shù)臄?shù)據(jù)量的最大值

Refer:

Linux kenel sendfile 如何提升性能

nginx sendifle tcp_nopush tcp_nodelay參數(shù)解釋

配置連接超時(shí)時(shí)間
  

與用戶建立連接后,Nginx可以保持這些連接一段時(shí)間, 默認(rèn) 75s
下面的65s可以被Mozilla/Konqueror識(shí)別,是發(fā)給用戶端的頭部信息Keep-Alive

keepalive_timeout 75s 65s;

單連接請(qǐng)求數(shù)上限
  

和用戶端建立連接后,用戶通過此連接發(fā)送請(qǐng)求;這條指令用于設(shè)置請(qǐng)求的上限數(shù)

keepalive_requests 100;

配置網(wǎng)絡(luò)監(jiān)聽

listen *:80 | *:8000; # 監(jiān)聽所有的80和8000端口

listen 192.168.1.10:8000;
listen 192.168.1.10;
listen 8000; # 等同于 listen *:8000;
listen 192.168.1.10 default_server backlog=511; # 該ip的連接請(qǐng)求默認(rèn)由此虛擬主機(jī)處理;最多允許1024個(gè)網(wǎng)絡(luò)連接同時(shí)處于掛起狀態(tài)

基于名稱的虛擬主機(jī)配置

server_name myserver.com www.myserver.com;

server_name .myserver.com www.myserver. myserver2.*; # 使用通配符

  

不允許的情況: server_name www.ab*d.com; # *只允許出現(xiàn)在www和com的位置

server_name ~^wwwd+.myserver.com$; # 使用正則

  

nginx的配置中,可以用正則的地方,都以~開頭

  

from Nginx~0.7.40 開始,server_name 中的正則支持 字符串捕獲功能(capture)

server_name ~^www.(.+).com$; # 當(dāng)請(qǐng)求通過www.myserver.com請(qǐng)求時(shí), myserver就被記錄到$1中, 在本server的上下文中就可以使用

如果一個(gè)名稱 被多個(gè)虛擬主機(jī)的 server_name 匹配成功, 那這個(gè)請(qǐng)求到底交給誰處理呢?看優(yōu)先級(jí):

準(zhǔn)確匹配到server_name

通配符在開始時(shí)匹配到server_name

通配符在結(jié)尾時(shí)匹配到server_name

正則表達(dá)式匹配server_name

先到先得

基于IP的虛擬主機(jī)配置
  

基于IP的虛擬主機(jī),需要將網(wǎng)卡設(shè)置為同時(shí)能夠監(jiān)聽多個(gè)IP地址

ifconfig
# 查看到本機(jī)IP地址為 192.168.1.30
ifconfig eth1:0 192.168.1.31 netmask 255.255.255.0 up
ifconfig eth1:1 192.168.1.32 netmask 255.255.255.0 up
ifconfig
# 這時(shí)就看到eth1增加來2個(gè)別名, eth1:0 eth1:1

# 如果需要機(jī)器重啟后仍保持這兩個(gè)虛擬的IP
echo "ifconfig eth1:0 192.168.1.31 netmask 255.255.255.0 up" >> /etc/rc.local
echo "ifconfig eth1:0 192.168.1.32 netmask 255.255.255.0 up" >> /etc/rc.local

再來配置基于IP的虛擬主機(jī)

http {
    ...
    server {
     listen 80;
     server_name 192.168.1.31;
     ...
    }
    server {
     listen 80;
     server_name 192.168.1.32;
     ...
    }
}
配置location塊(重中之重)
  

location 塊的配置,應(yīng)該是最常用的了

location [ = | ~ | ~* | ^~ ] uri {...}

這里內(nèi)容分2塊,匹配方式和uri, 其中uri又分為 標(biāo)準(zhǔn)uri和正則uri

先不考慮 那4種匹配方式

Nginx首先會(huì)再server塊的多個(gè)location中搜索是否有標(biāo)準(zhǔn)uri和請(qǐng)求字符串匹配, 如果有,記錄匹配度最高的一個(gè);

然后,再用location塊中的正則uri和請(qǐng)求字符串匹配, 當(dāng)?shù)谝粋€(gè)正則uri匹配成功,即停止搜索, 并使用該location塊處理請(qǐng)求;

如果,所有的正則uri都匹配失敗,就使用剛記錄下的匹配度最高的一個(gè)標(biāo)準(zhǔn)uri處理請(qǐng)求

如果都失敗了,那就失敗嘍

再看4種匹配方式:

=: 用于標(biāo)準(zhǔn)uri前,要求請(qǐng)求字符串與其嚴(yán)格匹配,成功則立即處理

^~: 用于標(biāo)準(zhǔn)uri前,并要求一旦匹配到,立即處理,不再去匹配其他的那些個(gè)正則uri

~: 用于正則uri前,表示uri包含正則表達(dá)式, 并區(qū)分大小寫

~*: 用于正則uri前, 表示uri包含正則表達(dá)式, 不區(qū)分大小寫

  

^~ 也是支持瀏覽器編碼過的URI的匹配的哦, 如 /html/%20/data 可以成功匹配 /html/ /data

配置請(qǐng)求的根目錄

Web服務(wù)器收到請(qǐng)求后,首先要在服務(wù)端指定的目錄中尋找請(qǐng)求資源

root /var/www;

更改location的URI

除了使用root指明處理請(qǐng)求的根目錄,還可以使用alias 改變location收到的URI的請(qǐng)求路徑

location ~ ^/data/(.+.(htm|html))$ {
    alias /locatinotest1/other/$1;
}
設(shè)置網(wǎng)站的默認(rèn)首頁

index 指令主要有2個(gè)作用:

對(duì)請(qǐng)求地址沒有指明首頁的,指定默認(rèn)首頁

對(duì)一個(gè)請(qǐng)求,根據(jù)請(qǐng)求內(nèi)容而設(shè)置不同的首頁,如下:

location ~ ^/data/(.+)/web/$ {
    index index.$1.html index.htm;
}
設(shè)置網(wǎng)站的錯(cuò)誤頁面

error_page 404 /404.html;
error_page 403 /forbidden.html;
error_page 404 =301 /404.html;

location /404.html {
    root /myserver/errorpages/;
}
基于IP配置Nginx的訪問權(quán)限
location / {
    deny 192.168.1.1;
    allow 192.168.1.0/24;
    allow 192.168.1.2/24;
    deny all;
}
  

從192.168.1.0的用戶時(shí)可以訪問的,因?yàn)榻馕龅絘llow那一行之后就停止解析了

基于密碼配置Nginx的訪問權(quán)限

auth_basic "please login";
auth_basic_user_file /etc/nginx/conf/pass_file;

  

這里的file 必須使用絕對(duì)路徑,使用相對(duì)路徑無效

# /usr/local/apache2/bin/htpasswd -c -d pass_file user_name
# 回車輸入密碼,-c 表示生成文件,-d 是以 crypt 加密。

name1:password1
name2:password2:comment
  

經(jīng)過basic auth認(rèn)證之后沒有過期時(shí)間,直到該頁面關(guān)閉;
如果需要更多的控制,可以使用 HttpAuthDigestModule http://wiki.nginx.org/HttpAuthDigestModule

Nginx服務(wù)器基礎(chǔ)配置實(shí)例
user ganiks ganiks;

worker_processes 3;

error_log logs/error.log;
pid myweb/nginx.pid;

events {
    use epoll;
    worker_connections 1024;
}

http {
    include mime.types;
    default_type applicatioin/octet-stream;

    sendfile on;

    keepalive_timeout 65;

    log_format access.log "$remote_addr [$time_local] "$request" "$http_user_agent"";

    server {
        listen 8081;
        server_name myServer1;

        access_log myweb/server1/log/access.log;
        error_page 404 /404.html;

        location /server1/location1 {
            root myweb;
            index index.svr1-loc1.htm;
        }

        location /server1/location2 {
            root myweb;
            index index.svr1-loc2.htm;
        }
    }

    server {
        listen 8082;
        server_name 192.168.0.254;

        auth_basic "please Login:";
        auth_basic_user_file /home/ganiks/learn/nginx/Nginx/myweb/user_passwd;

        access_log myweb/server2/log/access.log;
        error_page 404 /404.html;

        location /server2/location1 {
            root myweb;
            index index.svr2-loc1.htm;
        }

        location /svr2/loc2 {
            alias myweb/server2/location2/;
            index index.svr2-loc2.htm;
        }

        location = /404.html {
            root myweb/;
            index 404.html;
        }
    }
}
ganiks ?  Nginx git:(master) ? ./sbin/nginx -c conf/nginx02.conf
nginx: [warn] the "user" directive makes sense only if the master process runs with super-user privileges, ignored in /home/ganiks/learn/nginx/Nginx/conf/nginx02.conf:1
ganiks ?  myweb git:(master) ? tree .      
.
├── 404.html
├── server1
│?? ├── location1
│?? │?? └── index.svr1-loc1.htm
│?? ├── location2
│?? │?? └── index.svr1-loc2.htm
│?? └── log
│??     └── access.log
└── server2
    ├── location1
        │?? └── index.svr2-loc1.htm
            ├── location2
                │?? └── index.svr2-loc2.htm
                    └── log
                            └── access.log

                            8 directories, 7 files

測(cè)試myServer1的訪問
http://myserver1:8081/server1/location1/
this is server1/location1/index.svr1-loc1.htm

http://myserver1:8081/server1/location2/
this is server1/location1/index.svr1-loc2.htm
測(cè)試myServer2的訪問
http://192.168.0.254:8082/server2/location1/
this is server2/location1/index.svr2-loc1.htm

http://192.168.0.254:8082/svr2/loc2/
this is server2/location1/index.svr2-loc2.htm

http://192.168.0.254:8082/server2/location2/
404 404 404 404

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/39190.html

相關(guān)文章

  • Nginx筆記(二)Nginx基礎(chǔ)

    摘要:負(fù)責(zé)請(qǐng)求的全局配置,負(fù)責(zé)具體及其下具體的配置。運(yùn)行狀態(tài)監(jiān)控使用模塊配置上下文配置實(shí)踐編輯配置如下增加一個(gè)配置這里寫這個(gè)校驗(yàn)配置重載配置驗(yàn)證結(jié)果隨機(jī)首頁使用模塊配置上下文配置實(shí)踐我們先在目錄下準(zhǔn)備個(gè)頁面和以上個(gè)頁面,只是不同。 Nginx配置文件 nginx.conf是主配置文件,在文件尾通過include /etc/nginx/conf.d/*.conf引入了default.conf配...

    liaoyg8023 評(píng)論0 收藏0
  • Nginx location 配置踩坑過程分享

    摘要:所以到目前為止,基本可以肯定是的上出了一些問題。問題解決因篇幅有限,為了直面本次問題的核心,我不再貼出完整的配置,我簡化此次問題的模型。 這是五個(gè)小時(shí)與一個(gè)字符的戰(zhàn)斗 是的,作為一個(gè)程序員,你往往發(fā)現(xiàn),有的時(shí)候你花費(fèi)了數(shù)小時(shí),數(shù)天,甚至數(shù)星期來查找問題,但最終可能只花費(fèi)了數(shù)秒,改動(dòng)了數(shù)行,甚至幾個(gè)字符就解決了問題。這次給大家分享一個(gè)困擾了我很久,我花了五個(gè)小時(shí)才查找出問題原因...

    alighters 評(píng)論0 收藏0
  • Nginx + Node + Vue 部署初試(2019-02-18修改)

    摘要:它的作用是監(jiān)聽后建立的連接,對(duì)讀寫事件進(jìn)行添加刪除。事件處理模型和的非阻塞模型結(jié)合在一起使用。 趁著爸媽做年夜飯之前,把之前做的筆記貼出來,新的一年到了,祝大家 showImg(https://segmentfault.com/img/remote/1460000018099635?w=251&h=201); Nginx + Node + Vue 部署初試 知乎 個(gè)人博客 Githu...

    kel 評(píng)論0 收藏0
  • nginx日志管理

    摘要:一基礎(chǔ)配置配置示例聲明日志日志位置日志格式這里的關(guān)鍵點(diǎn)在這個(gè)配置參數(shù)表示記錄的格式,這只是個(gè)名稱,具體格式是使用指令設(shè)置格式說明我們當(dāng)然可以通過自定義自己喜歡的格式組合應(yīng)用自定義格式組合允許針對(duì)不同的做不同的日志策略二每天凌晨保存日志到 一、基礎(chǔ)配置 1.配置示例 access_log logs/host.access.log main access_log 聲明日志 logs...

    crelaber 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<