Skip to content

Nginx

参考资料

概念

  • Nginx 是一个开源的 WEB 服务器, 它可以作为负载均衡器, 缓存服务器, 反向代理服务器等角色使用
  • 反向代理的作用是将客户端的请求转发给后端的服务器, 然后将后端服务器的响应返回给客户端 这样可以实现负载均衡 (多个实际服务器), 并隐藏后端服务器的 IP 地址
    • 可以配置轮询, 加权轮询, ip_hash 等策略
  • Nginx 采用主从架构, 一个 Master 进程和多个 Worker 进程 (配置文件中指定)
  • 通过虚拟主机的方式实现一服务器可以提供多个网站
  • 配置 SSL 证书实现 https 访问

命令

nginx -s signal # 发送信号给 nginx 进程
# 常用信号
# stop 快速停止 nginx 服务器
# quit 正常停止 nginx 服务器
# reload 重新加载配置文件, 新配置生效
# reopen 重新打开日志文件

ngingx -t  # 检查配置文件状态

ps aux|grep nginx  # 查看 nginx 进程

配置文件

  • conf 目录下的 nginx.conf, 默认配置的 nginx 监听的端口为 80
# 最外层是一些全局配置

events {
    # 网络连接配置
}

http {
    # 可以配置多个 server 块, 每一个都是一个虚拟主机

    include path; # 引入其他配置文件

    # 可以配置证书, 实现 https 访问

    # 反向代理
    upstream 代理名字 {
        # 配置...
        ip_hash; # 开启 ip_hash 模式
        # 用户的请求根据其 ip 地址进行 hash 计算, 然后将请求分配到固定的后端服务器

        server 服务器地址 weight = 10;
        server 服务器地址 weight = 20;
    }

    server {
        # 配置...

        server_name 域名; # 配置域名

        # 配置 http 请求重定向到 https

        # 匹配 url 路径
        location / { # 匹配根路径
        root 相对路径; # 文件的目录
        index 默认索引文件.html;        
        }

        location /name { 
            proxy_pass http://代理名字;
        }
    }
}

防火墙

  • 若无法访问, 可能是防火墙没有开启端口
  • firwall-cmd: 是 Linux 提供的操作 firewall 的一个工具
  • --permanent: 表示设置为持久
  • --add-port: 标识添加的端口
service firewalld start # 启动防火墙
service firewalld restart # 重启防火墙
service firewalld stop # 停止防火墙
firewall-cmd --list-all # 查看防火墙规则
firewall-cmd --query-port=8080/tcp # 查询端口是否开放
firewall-cmd --permanent --add-port=80/tcp # 开放 80 端口
firewall-cmd --permanent --remove-port=8080/tcp # 移除端口
firewall-cmd --reload # 重启防火墙 ( 修改配置后要重启防火墙 )