Nginx 多站点配置实例详解

本文主要介绍了Nginx 多站点配置实例详解的相关资料,需要的朋友可以参考下

Nginx 多站点配置实例详解

在一台 VPS 上,我们有时候需要同时跑几个 virtualenv。比如 virtualenv app1 跑的是 Django 的一个应用,而 virtualenv app2 跑的是 Tornado。那么如何配置 Nginx,让它同时支持这两个 virtualenv 的运行呢?

首先是 Nginx 的主配置,位于 etc/nginx/ngnix.conf,让它保持默认就行:

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

user nginx;

worker_processes 1;

error_log /var/log/nginx/error.log warn;

pid    /var/run/nginx.pid;

events {

  worker_connections 1024;

}

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 /var/log/nginx/access.log main;

  sendfile    on;

  #tcp_nopush   on;

  keepalive_timeout 65;

  #gzip on;

  server {

    listen    80;

    server_name 112.124.7.216;

    #server_name localhost;

    #if ($host != 'www.nowamagic.net' ) {

    #  rewrite ^/(.*)$ http://www.nowamagic.net/$1 permanent;

    #}

    access_log /home/nowamagic/logs/access.log;

    error_log /home/nowamagic/logs/error.log;

    #root     /root/nowamagic_venv/nowamagic_pj;

    location / {

      uwsgi_pass 127.0.0.1:8077;

      #include uwsgi_params;

      include /etc/nginx/uwsgi_params;

      #uwsgi_pass 127.0.0.1:8077;

      #uwsgi_param UWSGI_SCRIPT index;

      #uwsgi_param UWSGI_PYHOME $document_root;

      #uwsgi_param UWSGI_CHDIR $document_root;

    }

    location ~ \.php$ {

      #root     html;

      root      /var/www/html;

      fastcgi_pass  127.0.0.1:9000;

      fastcgi_index index.php;

      fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

      include    fastcgi_params;

    }

    access_log off;

  }

  include /etc/nginx/conf.d/*.conf;

}

注意到这一句,include /etc/nginx/conf.d/*.conf; 它会加载 conf.d 文件夹下的所有配置文件。那么接下来的事情就简单了,我们设计两个 .conf ,一个是 django 的配置,一个是 tornado 的配置。

1. app1_django.conf

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

server {

  listen    80;

  server_name 112.124.7.216;

  #server_name localhost;

  #if ($host != 'www.imofa.net' ) {

  #  rewrite ^/(.*)$ http://www.imofa.net/$1 permanent;

  #}

  access_log /home/nowamagic/logs/access.log;

  error_log /home/nowamagic/logs/error.log;

  #root     /root/nowamagic_venv/nowamagic_pj;

  location / {

    uwsgi_pass 127.0.0.1:8077;

    #include uwsgi_params;

    include /etc/nginx/uwsgi_params;

    #uwsgi_pass 127.0.0.1:8077;

    #uwsgi_param UWSGI_SCRIPT index;

    #uwsgi_param UWSGI_PYHOME $document_root;

    #uwsgi_param UWSGI_CHDIR $document_root;

  }

  location ~ \.php$ {

    #root     html;

    root      /var/www/html;

    fastcgi_pass  127.0.0.1:9000;

    fastcgi_index index.php;

    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

    include    fastcgi_params;

  }

  access_log off;

}

下面是 tornado 的配置:

2. app2_tornado.conf

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

upstream tornado {

  server 127.0.0.1:8888;

}

  

server {

  listen  80;

  root /root/nmapp2_venv;

  index index.py index.html;

  

  server_name server;

  

  location / {

    #if (!-e $request_filename) {

    #  rewrite ^/(.*)$ /index.py/$1 last;

    #}

  }

  

  location ~ /index\.py {

    proxy_pass_header Server;

    proxy_set_header Host $http_host;

    proxy_set_header X-Real-IP $remote_addr;

    proxy_set_header X-Scheme $scheme;

    proxy_pass http://tornado;

  }

}

重启 Nginx:

1

service nginx restart

OK,两个虚拟环境的 app 都能访问了。

感谢阅读,希望能帮助到大家,谢谢大家 !

来源:微点阅读   https://www.weidianyuedu.com

猜你喜欢

转载自blog.csdn.net/weixin_45707610/article/details/131764323