首页 > 网站 > Nginx > 正文

Nginx 多站点配置实例详解

2024-08-30 12:28:45
字体:
来源:转载
供稿:网友

Nginx 多站点配置实例详解

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

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

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

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

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:

service nginx restart

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

感谢阅读,希望能帮助到大家,谢谢大家,对本站的支持!


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表