Nginx 多站点配置实例详解
程序员文章站
2022-05-12 18:34:20
nginx 多站点配置实例详解
在一台 vps 上,我们有时候需要同时跑几个 virtualenv。比如 virtualenv app1 跑的是 django 的一个应用...
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 都能访问了。
感谢阅读,希望能帮助到大家,谢谢大家,对本站的支持!
上一篇: java中的IO:Properties类
下一篇: 刘备称帝后,为何赵云只封了一个翊军将军?