Nginx 从安装到基本使用

部署web项目大多情况会用到nginx,以前项目都是从网上copy下来的,也没怎么理解,今天正式上手nginx,从安装到基本使用。

使用环境 CentOS7。


1. 安装nginx

构建 yum repository,新建文件 /etc/yum.repos.d/nginx.repo,内容:

[nginx]

name=nginx repo

baseurl=http://nginx.org/packages/OS/OSRELEASE/$basearch/

gpgcheck=0

enabled=1

其中baseurl的OS根据自己情况改成 rhel 或者 centos;OSRELEASE 改成版本号如 6 或 7。

centos7的 baseurl=http://nginx.org/packages/centos/7/$basearch/。

保存退出后执行安装:

sudo yum install nginx


2. nginx的启动与关闭

sudo systemctl start nginx # 启动nginx

sudo systemctl stop nginx # 关闭nginx

sudo systemctl restart nginx # 重启nginx

sudo systemctl status nginx # 查看nginx状态

启动nginx后,打开浏览器输入ip,看到nginx的index页面则表示成功。

如果访问不了检查下防火墙端口:

# 添加80和443端口

firewall-cmd --permanent --zone=public --add-service=http

firewall-cmd --permanent --zone=public --add-service=https

firewall-cmd --reload


3. 配置nginx

nginx配置文件默认为 nginx.conf,通常文件路径为 /usr/local/nginx/conf, /etc/nginx(centos7环境), 或 /usr/local/etc/nginx.

nginx常用命令:

nginx -s stop # 快速停止

nginx -s quit # 优雅停止

nginx -s reload # 重新加载配置文件

nginx -s reopen # 重开日志文件

通过kill结束nginx:

nginx.pid 通常在路径 /usr/local/nginx/logs 或 /var/run(centos7环境)

ps -ax | grep nginx

kill -s QUIT 1628


静态服务器配置:

新建2个文件夹:/data/www 和 /data/images

在nginx.conf文件中默认已经配置了server块,注释掉然后新建一个server块,内容:

server {

    location / {

        root /data/www;

    }



    location /images/ {

        root /data;

    }

}

上面配置监听标准80端口。url以 /images 开头在 /data/images 中查找,找不到则 404。其它 url 均在 /data/www 中查找。url 会先匹配 /images,再匹配 / 。

在 /data/www 中放入 index.html 文件,/data/images 中放入一张图片 1.jpg。

刷新配置:

nginx -s reload

访问浏览器 ip/images/1.jpg 和 ip/index.html

如果访问不了查看日志文件,日志文件通常在  /usr/local/nginx/logs 或 /var/log/nginx(centos7环境).


4. 代理服务

注释上面 server 块,新建2个 server 块:

server{

    listen 5000;  # 监听 5000 端口,下面不指定默认监听 80 端口

    root /data/real; # 此时root配置在外,location不拥有自己的root。代理转发时实际位置

    location / {

    }

}

# 除了请求指定点图片文件外,所有请求转发到 http://localhost:5000

server{

    location / {

        proxy_pass http://localhost:5000;

    }


    location ~\.(gif|jpg|png)$ {  # 正则表达式匹配指定图片文件,~开头 $结束

        root /data/images;

    }

}


5. nginx代理 flask

将上面监听 5000 端口的server注释掉,将 flask 启动在 5000 端口即可,这样除了指定的图片文件,请求将被转发到 flask。

展开阅读全文