安装和配置nginx(非docker)

Nginx 是开源、高性能、高可靠的 Web 和反向代理服务器,而且支持热部署,几乎可以做到 7 * 24 小时不间断运行,即使运行几个月也不需要重新启动,还能在不间断服务的情况下对软件版本进行热更新。性能是 Nginx 最重要的考量,其占用内存少、并发能力强、能支持高达 5w 个并发连接数,最重要的是,配置使用也比较简单。

因为我们用nginx作Web服务器,所以我们需要先安装nginx服务。

卸载nginx

参考:https://www.python100.com/html/0S5UG8L956FT.html

查看版本
nginx -v

安装(CentOS)

具体步骤如下:

使用root用户远程登录阿里云服务器,使用yum命令进行安装。

# 安装nginx的依赖环境
yum install gcc-c++
yum install -y pcre pcre-devel
yum install -y zlib zlib-devel
yum install -y openssl openssl-devel

# 下载nginx安装包。
wget -c https://nginx.org/download/nginx-1.10.1.tar.gz

# 将安装包解压到/usr/local目录下
tar -xvf nginx-1.10.1.tar.gz -C /usr/local

# 进入/usr/local目录,确认nginx解压到该目录下
cd /usr/local
ls

# 进入nginx-1.10.1目录,会发现该目录下有一个configure文件,执行该配置文件
cd nginx-1.10.1/
ls
./configure

# 编译并安装nginx。
make
make install

# 查找nginx安装目录
whereis nginx
# 或者
find / -name nginx.conf

# 进入nginx的【安装目录】
cd /usr/local/nginx
ls

# 由于nginx默认通过80端口访问,而Linux默认情况下不会开发该端口号,因此需要开放linux的80端口供外部访问
/sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT

# 进入安装目录(usr/local/nginx)的sbin 目录下,启动nginx。
cd sbin
./nginx

# 没有任何消息,代表启动成功。此时,便可以通过“公网IP+端口”的方式访问 http://xx.xx.xxx.xxx:80/ 进入nginx欢迎页面了

配置nginx转发

如果想对这个项目用特定的子域名进行访问,就要先进行 域名解析,比如我这里是用阿里的

image-20231221150721215

image-20231221150904872

# 专门为项目创建一个【前端部署目录】
mkdir -p /home/www/fastapivue2

在nginx配置文件中,配置server服务(监听端口和项目部署的目录)
配置文件路径如下:/usr/local/nginx/conf/nginx.conf

修改完之后,重新加载配置文件,才生效
/usr/local/nginx/sbin/nginx -s reload

配置文件 nginx.conf, 配置文件内容如下:直接复制即可

#user  nobody;
worker_processes  auto;  # Nginx 进程数,一般设置为和 CPU 核数一样

#pid        logs/nginx.pid;

events {
    worker_connections  1024;
}

# 配置使用最频繁的部分,代理、缓存、日志定义等绝大多数功能和第三方模块的配置都在这里设置
http {
    
    
    sendfile        on;     # 开启高效传输模式
    keepalive_timeout  65;  # 保持连接的时间,也叫超时时间,单位秒
    types_hash_max_size 2048;
    
    include       mime.types;  # 文件扩展名与类型映射表
    default_type  application/octet-stream;   # 默认文件类型

    server {
        listen       80;
        # 如果没有备案域名,可以填写服务器公网ip,以后有了再改回来
        server_name  51automate.cn;

        location / {
            root    /home/www/hexo;  # 网站根目录
            index  index.html index.htm;   # 默认首页文件
            # deny 172.168.22.11; # 禁止访问的ip地址,可以为all
            # allow 172.168.33.44;# 允许访问的ip地址,可以为all
        }
    }

    server {
        listen       80;
        server_name  myfav.51automate.cn;

        location / {
            root    /home/www/myFavorite;
            index  index.html index.htm;
            try_files $uri $uri/ /index.html;
        }
        
        # 访问链接中出现 /api/ 就转发到本地的9090端口(该端口是 后端服务端口)
        location /api/ {
            proxy_pass   http://127.0.0.1:9090/;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
    server {
        listen       80;
        server_name  fv2.51automate.cn;

        location / {
            root    /home/www/fastapivue2;
            index  index.html index.htm;
            try_files $uri $uri/ /index.html;
        }
        
        # 访问链接中出现 /api/ 就转发到本地的8888端口(该端口是 后端服务端口)
        location /api/ {
            proxy_pass   http://127.0.0.1:8888/api/;
        }
    }
    
}

重点注意端口转发内容

location /api/ {
            proxy_pass   http://127.0.0.1:8888/;
        }

另外配置nginx之后要重新加载才生效。

拓展:nginx的其它常用命令

重启nginx
/usr/local/nginx/sbin/nginx -s reopen
停止服务
/usr/local/nginx/sbin/nginx -s stop

手动启动nginx服务
cd /usr/local/nginx       进入nginx安装目录
sudo /usr/local/nginx/sbin/nginx  管理员权限【启动nginx】

---------------------------------------------------------------

# 开机配置
# 开机自动启动
systemctl enable nginx
# 关闭开机自动启动
systemctl disable nginx


# 启动Nginx
# 启动Nginx成功后,可以直接访问主机IP,此时会展示Nginx默认页面
systemctl start nginx

# 停止Nginx
systemctl stop nginx

# 重启Nginx
systemctl restart nginx

# 重新加载Nginx
systemctl reload nginx

# 查看 Nginx 运行状态
systemctl status nginx

# 查看Nginx进程
ps -ef | grep nginx

# 杀死Nginx进程
# 根据上面查看到的Nginx进程号,杀死Nginx进程,-9 表示强制结束进程
kill -9 pid

# Nginx 应用程序命令:
# 向主进程发送信号,重新加载配置文件,热重启
nginx -s reload
# 重启 Nginx
nginx -s reopen
# 快速关闭
nginx -s stop
# 等待工作进程处理完成后关闭
nginx -s quit
# 查看当前 Nginx 最终的配置
nginx -T
# 检查配置是否有问题
nginx -t

查看端口下的服务

# 查看占用端口号的服务
netstat -nlp

# 查看某个服务的进程信息
ps -ef|grep 服务名称

# 查看当前进程的端口号
netstat -anp|grep 进程号

# 查看某个端口下的服务
lsof -i:端口号
lsof -i:端口号|grep 服务名

image-20231229135648546