本文已收录至我的个人网站:阿里云后台部署全过程-4-Nginx配置
Nginx是高性能的HTTP和反向代理web服务器,Nginx处理静态资源的能力很强,支持高并发和负载均衡,成本低且稳定性好,是主流服务器软件之一。
我们这里主要使用它的静态处理能力,和反向代理能力(将动态请求交给我们自己的Python服务器)。
我们在第2节的时候,已经把Nginx安装好了,所以下面直接进行配置。
1、在对应路径,创建一个配置文件,然后写入相应内容。命令:touch /etc/nginx/sites-available/nginx.conf
server {
listen 80; # 监听80端口
root /srv/awesome/www;
access_log /srv/awesome/log/access_log;
error_log /srv/awesome/log/error_log;
# server_name awesome.liaoxuefeng.com; # 配置域名
# 处理静态文件/favicon.ico:
location /favicon.ico {
root /srv/awesome/www;
}
# 处理静态资源:
location ~ ^\/static\/.*$ {
root /srv/awesome/www;
}
# 动态请求转发到9000端口:
location / {
proxy_pass http://127.0.0.1:9000;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
2、更新路径后,通过浏览器访问,事实是获取到Nginx的欢迎界面,没有到我们的界面。
3、在usr/sbin 目录下,执行测试命令:/usr/sbin/nginx -t
发现测试结果没有问题,观察测试的文件夹,我们切换到这个文件夹里去看看有什么
里面有一个Nginx配置文件,打开看一下
可以看到,在http字段里,并不包含我们放置配置文件的文件夹。
把配置文件移动到对应文件夹
4、重载Nginx,命令:systemctl reload nginx
然后观察服务启动情况,命令:netstat -tnulp | grep nginx
用浏览器访问,发现我们修改过的配置文件已经生效,也转到了我们的html页面,但是没有相应的图片资源。
5、这时候我们打开日志文件,发现在浏览器多次刷新后,日志并没有更新,猜测之前的日志是默认配置文件产生的,现在我们的配置生效了,应该定位到一个新的路径。
将之前的/root 路径删掉试试,看看能不能出日志文件,删掉一测试,报错了,说明不是root的问题,应该是后缀的问题
把后缀改了,把root加上,测试,成功了,其他路径,随后也加上root
6、重启Nginx,刷新浏览器访问,access日志果然刷新了,但是没有我们想要的信息(没有相应图片资源的问题)
再看error日志,终于发现原因是权限的问题。
ps -ef | grep nginx,用这个命令看看启动Nginx的user都是谁,原来是启动者不一致导致的权限冲突,把user都改为root,终于可以正常访问了。
7、将监听端口改为默认的80,这样用户就不需要加入端口号,就可以访问了
重载看一下,好像不太对劲,刷新浏览器看看,果然到了Nginx的欢迎界面
看一下同一文件夹下的default文件都干点什么,发现80端口被它占用了
把它挪到一个备份文件夹下(自己新建的),然后测试重载Nginx,刷新浏览器,恢复正常访问了。