Nginx配置反向代理uwsgi

我的主页: isfantasy.com

自django项目做完已有几天,这几天竟然都卡在了nginx配置上,在网上也搜了各种教程,但是就是无法访问,我的内心是崩溃的。好在今天配置完了,发个博客记录一下配置文件及过程,各种安装过程就不说了,直接上配置文件,正所谓:你离成功只差一个配置文件!!!

1.各种路径

项目名为:project
项目根目录:/root/project
项目文件结构:

project/
├── manage.py
└── project
    ├── __init__.py
    ├── settings.py
    ├── urls.py
    └── wsgi.py

uwsgi配置文件路径:/root/script/uwsgi.ini
nginx根目录:/etc/nginx
nginx默认配置文件:/etc/nginx/nginx.conf
项目自定义配置文件:/etc/nginx/conf.d/project.conf

2.配置uwsgi

2.1 uwsgi配置

# uwsig使用配置文件启动
[uwsgi]
# 项目目录
chdir=/root/project
# 指定项目的application
module=project.wsgi:application
# 指定sock的文件路径
socket=/root/ctguinfowork/script/uwsgi.sock
# 进程个数
workers=5
pidfile=/root/script/uwsgi.pid
# 指定IP端口
http= :8080
# 指定静态文件,这个项目中没有,如果你的项目中有静态文件的话按这个目录结构配置
static-map=/static=/root/project/static
# 启动uwsgi的用户名和用户组
uid=root
gid=root
# 启用主进程
master=true
# 自动移除unix Socket和pid文件当服务停止的时候
vacuum=true
# 序列化接受的内容,如果可能的话
thunder-lock=true
# 启用线程
enable-threads=true
# 设置自中断时间
harakiri=30
# 设置缓冲
post-buffering=4096
# 设置日志目录
daemonize=/root/script/uwsgi.log

2.2启动uwsgi
启动uwsgi就比较简单(如果没有报错的话):uwsgi --ini /root/script/uwsgi.ini
启动成功后理论上来说就可以在浏览器栏输入ip:port来访问项目了,port为uwsgi中配置的端口

3.配置Nginx

3.1 自定义配置

upstream project{
    server 47.100.118.99:8080;
}

server {
    listen 80; 		#监听端口
    server_name  47.100.118.99;		#访问地址,这里比较坑,填什么就映射什么,如果你填localhost、127.0.0.1之类的,就意味着你只能在本机浏览器上访问,因为别人在自己电脑输入127.0.0.1就不是你了

    access_log  /var/log/nginx/project.access.log  main;		#普通日志
    error_log  /var/log/nginx/project.error.log;			#错误日志
    #root   html;
    #index  index.html index.htm index.php;

    location / {
        proxy_pass  http://project;		#这里http后等于第一行配置的名字

        #Proxy Settings
        proxy_redirect     off;
        proxy_set_header   Host             $host;
        proxy_set_header   X-Real-IP        $remote_addr;
        proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
        proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
        proxy_max_temp_file_size 0;
        proxy_connect_timeout      90;
        proxy_send_timeout         90;
        proxy_read_timeout         90;
        proxy_buffer_size          4k;
        proxy_buffers              4 32k;
        proxy_busy_buffers_size    64k;
        proxy_temp_file_write_size 64k;
   }
}

3.2 默认配置文件
默认配置文件基本上不用配置,保证其http{}里面包含上面的自定义文件就好了。

user root;				#这里改成root,因为默认nginx用户可能没有权限访问你的静态文件
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

# Load dynamic modules. See /usr/share/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;

events {
    worker_connections 1024;
}

http {
    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;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 2048;

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

    # Load modular configuration files from the /etc/nginx/conf.d directory.
    # See http://nginx.org/en/docs/ngx_core_module.html#include
    # for more information.
    include /etc/nginx/conf.d/*.conf;			#保证配置文件含有我们的自定义配置,其它路径也可以
}

3.3 启动nginx
启动也比较简单:/etc/nginx/nginx 直接运行这个nginx文件就好了,有环境变量的可以直接运行
如果已经启动的话,修改配置文件后要重新加载配置:nginx -s reload
3.4 访问项目
现在在浏览器输入你的nginx配置就可以直接访问uwsgi启动了项目了(尽管我还没想通为什么uwsgi就可以访问我非要用nginx),映射关系就是:nginxip:nginxport == uwsgiip:uwsgiport

4. 总结

这么个简单的配置竟然要这么久,认真总结如下:
1.急于求成。尚不了解nginx、uwsgi等配置文件含义的情况下直接使用,以致于一个小小的路径引用错误就让自己困惑很久
2.没看官方文档的习惯。其实nginx官方文档(尽管它是英文版的)有很多配置方式和示例代码,完全不像百度搜到的博客那样繁琐。而且一遇到问题就百度,可能将问题越加复杂化
3.可能是每天没睡好变笨了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值