在Ubuntu22.04上配置nginx, nginx+gunicorn+Django

概况

将在远程服务器上安装的Ubuntu22.04上的nginx1.22.0配置为与gunicorn配合使用。此外,还将与Django+DRF的API服务器进行集成,以便可以通过办公电脑的浏览器访问。nginx和gunicorn已经安装完成,并且Django+DRF的API服务器也已经完成配置。

 

开发环境设置如下:
Ubuntu22.04,IP地址为192.168.88.15。
作业用PC为Windows 10 Pro,IP地址为192.168.88.1。
nginx版本为1.22.0,监听端口为80。
gunicorn版本为20.1.0。
Python版本为3.10.6。
Django版本为3.2.15,监听端口为8000。
DRF版本为3.13.1。

在进行设置时

我没有使用Ubuntu的标准方式,而是添加了存储库来安装nginx,因此参考信息中的/etc/nginx文件夹结构与我的不同。具体来说,我没有sites-available和sites-enabled文件夹,也没有proxy_params文件。在查看了这个页面后,我注意到了这些差异。

 

因此,查看nginx的主要配置文件(/etc/nginx/nginx.conf),我们可以发现

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

在描述中提到,默认情况下,配置文件会读取/etc/nginx/conf.d文件夹内的.conf文件。我们可以在/etc/nginx/nginx.conf中追加include /etc/nginx/sites-enabled/*;的设置来使用sites-available和sites-enabled文件夹。也可以使用mkdir命令创建这些文件夹,但我打算按照默认的方式进行。

将.conf文件创建在/etc/nginx/conf.d文件夹中,并在配置文件中写入将访问80端口的内容发送到套接字的相关配置。原先存在的/etc/nginx/conf.d/default.conf已备份并删除。

设置

在/etc/nginx/conf.d目录下创建一个名为apitest.conf的nginx配置文件。

$ sudo nano /etc/nginx/conf.d/apitest.conf
server {
    listen 80;
    server_name 192.168.88.15;

    location = /favicon.ico { access_log off; log_not_found off; }
    location /static/ {
        root /home/lustm5/solution;
    }

    location / {
        proxy_set_header Host $http_host;
        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_pass http://unix:/run/gunicorn.sock;
    }
}

重新启动nginx和gunicorn。

$ sudo systemctl restart nginx
$ sudo systemctl restart gunicorn

如果Nginx无法通过错误重新启动,我们可以使用以下命令来查找原因。

$ sudo systemctl status nginx

我会打开ufw的80号端口。

$ sudo ufw allow 80

确认

image.png

最后

一旦实现了联动,接下来还有关于管理网站显示的事项,所以我想要稍微修改一下nginx的配置文件,使其更接近生产环境。

广告
将在 10 秒后关闭
bannerAds