nginx小记

286 阅读1分钟

安装

通过homebrew安装

如果没有安装homebrew,可以先安装homebrew

1. /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
2. 如果homebrew显示443,尝试切换手机热点安装
3. brew安装成功后 brew install nginx

配置nginx

在nginx目录下的servers文件内创建一个项目配置文件

vi xxx.com.conf


server {
    listen 80;  # 端口号 默认80
    server_name www.xxx.com; # 网站域名
    charset utf-8;

    index index.html index.htm index.php;

    error_page 404 /404.html;
    error_page 500 502 503 504  /busy.html;

    client_max_body_size 10m;
    client_body_timeout 900s;

    access_log  /tmp/xxx.log;  #项目日志文件
    error_log /tmp/xxx.error.log;  #项目错误日志文件

    location /pc {  # vue项目history模式指向目录,如果是放入服务器根目录直接指向/即可,解决翻新404
        root /Users/zhenghuihuang/Documents/work/zero/pc/pc_bosera/dist; #项目目录
        index /pc/index.html;
        try_files $uri $uri/ /pc/index.html;
        add_header Cache-Control no-cache; # 禁止缓存页面
    }
}

配置完成后 sudo nginx -t 检查是否有错误

最后 sudo nginx -s reload 保存并重启

gzip压缩

server {
    gzip on;  # 开启gzip压缩
    gzip_static on;
    gzip_min_length 10k;
    gzip_comp_level 8;
    gzip_vary on;
    gzip_buffers 4 16k;
    gzip_types text/plain application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
}

项目开启gzip后,重启nginx可能没有生效,可以先只配置初始两项
    gzip on;  # 开启gzip压缩
    gzip_static on;
重启nginx后,gzip生效后可以再把其它配置项加上

线上跨域配置

server {
    location ^~/apis/ { # 代理跨域 apis字段可以自定义
        rewrite ^/apis/(.*)$ /$1 break;  # apis与后端接口path字段相同
        proxy_pass https://xxx.com/;  # 需要做跨域的域名
    }
}

本地跨域配置

server {
    listen yyyy;  # 监听的端口号
    server_name 192.168.0.x;  # 本地ip
    charset utf-8;
    location ^~/apis/ {
        rewrite ^/apis/(.*)$ /$1 break;
        proxy_pass https://xxx.com/; # 需要代理的域名
    }
    location / {
        proxy_pass http://192.168.0.x:xxxx; #本地项目的ip+端口号
    }
}

本地项目的端口号必须和listen的端口号不一致,打开项目时,使用server_name + listen的本地地址查看项目,主要是通过listen的端口号进行代理的

负载均衡

  1. 分发的服务器配置好项目文件和nginx
  2. 主服务器进行分发,配置相应参数
upstream xxx { # 名称自定义
    # 负载均衡的服务器地址, 默认使用轮询的方式进行负载
    server 127.0.0.1:8081;
    server 127.0.0.1:8082;
}

server {
    location / {
        proxy_pass http://xxx;  # upstream定义的名称
    }
}

配置完重启服务器,在负载的服务器log上查看日志情况是否成功