溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

nginx與node.js結(jié)合使用的方法是什么

發(fā)布時(shí)間:2022-12-03 09:57:01 來源:億速云 閱讀:115 作者:iii 欄目:開發(fā)技術(shù)

本文小編為大家詳細(xì)介紹“nginx與node.js結(jié)合使用的方法是什么”,內(nèi)容詳細(xì),步驟清晰,細(xì)節(jié)處理妥當(dāng),希望這篇“nginx與node.js結(jié)合使用的方法是什么”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學(xué)習(xí)新知識(shí)吧。

Node.js是一個(gè)基于Chrome JavaScript運(yùn)行時(shí)建立的平臺(tái), 用于方便地搭建響應(yīng)速度快、易于擴(kuò)展的網(wǎng)絡(luò)應(yīng)用。Node.js 使用事件驅(qū)動(dòng), 非阻塞I/O 模型而得以輕量和高效,非常適合在分布式設(shè)備上運(yùn)行的數(shù)據(jù)密集型的實(shí)時(shí)應(yīng)用,如實(shí)時(shí)聊天等等。然而對(duì)于gzip編碼,靜態(tài)文件,HTTP緩存,SSL處理,負(fù)載平衡和反向代理等,都可以通過nginx來完成,從而減小node.js的負(fù)載,并通過nginx強(qiáng)大的緩存來節(jié)省網(wǎng)站的流量從而提高網(wǎng)站的加載速度。

流程圖

nginx與node.js結(jié)合使用的方法是什么

nginx配置如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

http {

    proxy_cache_path  /var/cache/nginx levels=1:2 keys_zone=one:8m max_size=3000m inactive=600m;

    proxy_temp_path /var/tmp;

    include       mime.types;

    default_type  application/octet–stream;

    sendfile        on;

    keepalive_timeout  65;

    gzip on;

    gzip_comp_level 6;

    gzip_vary on;

    gzip_min_length  1000;

    gzip_proxied any;

    gzip_types text/plain text/html text/css application/json application/x–javascript text/xml application/xml application/xml+rss text/javascript;

    gzip_buffers 16 8k;

    ssl_certificate /some/location/sillyfacesociety.com.bundle.crt;

    ssl_certificate_key /some/location/sillyfacesociety.com.key;

    ssl_protocols        SSLv3 TLSv1;

    ssl_ciphers HIGH:!aNULL:!MD5;

    upstream silly_face_society_upstream {

      server 127.0.0.1:61337;

      server 127.0.0.1:61338;

      keepalive 64;

    }

    server {

      listen 80;

      listen 443 ssl;

      server_name sillyfacesociety.com;

      return 301 $scheme://www.trustauth.cn$request_uri;

    }

    server {

        listen 80;

        listen 443 ssl;

        server_name www.sillyfacesociety.com;

        error_page 502  /errors/502.html;

        location ~ ^/(images/|img/|javascript/|js/|css/|stylesheets/|flash/|media/|static/|robots.txt|humans.txt|favicon.ico) {

          root /usr/local/silly_face_society/node/public;

          access_log off;

          expires max;

        }

        location /errors {

          internal;

          alias /usr/local/silly_face_society/node/public/errors;

        }

        location / {

          proxy_redirect off;

          proxy_set_header   X–Real–IP            $remote_addr;

          proxy_set_header   X–Forwarded–For  $proxy_add_x_forwarded_for;

          proxy_set_header   X–Forwarded–Proto $scheme;

          proxy_set_header   Host                   $http_host;

          proxy_set_header   X–NginX–Proxy    true;

          proxy_set_header   Connection “”;

          proxy_http_version 1.1;

          proxy_cache one;

          proxy_cache_key sfs$request_uri$scheme;

          proxy_pass         http://silly_face_society_upstream;

        }

    }

}

配置段說明

1

2

3

4

5

6

7

8

9

http {

    ...

    upstream silly_face_society_upstream {

      server 127.0.0.1:61337;

      server 127.0.0.1:61338;

      keepalive 64;

    }

    ...

}

nginx負(fù)載均衡多個(gè)nodo.js實(shí)例。keepalive 64 指示nginx在任何時(shí)候保持最少64個(gè)HTTP/ 1.1連接到代理服務(wù)器。如果有更多的流量nginx將打開更多的連接。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

http {

    ...

    server {

        ...

        location / {

          proxy_redirect off;

          proxy_set_header   X–Real–IP            $remote_addr;

          proxy_set_header   X–Forwarded–For  $proxy_add_x_forwarded_for;

          proxy_set_header   Host                   $http_host;

          proxy_set_header   X–NginX–Proxy    true;

          ...

          proxy_set_header   Connection “”;

          proxy_http_version 1.1;

          proxy_pass         http://silly_face_society_upstream;

        }

        ...

    }

}

將符合哪些的請(qǐng)求發(fā)送到代理上。nginx的匹配規(guī)則可以取看看前面的文章。

nginx處理靜態(tài)內(nèi)容

1

2

3

4

5

6

7

8

9

10

11

12

http {

    ...

    server {

        ...

        location ~ ^/(images/|img/|javascript/|js/|css/|stylesheets/|flash/|media/|static/|robots.txt|humans.txt|favicon.ico) {

          root /usr/local/silly_face_society/node/public;

          access_log off;

          expires max;

        }

        ...

    }

}

設(shè)置緩存

1

2

3

4

5

6

http {

    ...

    proxy_cache_path  /var/cache/nginx levels=1:2 keys_zone=one:8m max_size=3000m inactive=600m;

    proxy_temp_path /var/tmp;

    ...

}

1

2

3

4

5

6

7

8

9

10

11

12

http {

  server {

     ...

     location / {

          ...

          proxy_cache one;

          proxy_cache_key sfs$request_uri$scheme;

          ...

     }

     ...

  }

}

緩存是通過HTTP頭部來控制的。

讀到這里,這篇“nginx與node.js結(jié)合使用的方法是什么”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識(shí)點(diǎn)還需要大家自己動(dòng)手實(shí)踐使用過才能領(lǐng)會(huì),如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI