nginx代理本地静态文件

nginx官网nginx中文文档

简单来说,nginx是一个代理服务器,他可以帮助我们实现http代理、反向代理(客户端向服务端发起请求是正向代理,服务端处理请求返回给客户端就是反向代理)、负载均衡等,最基础的就是项目用它来代理到服务端的本地文件。

1、nginx 安装及启动(mac为例)

nginx原理和机制可见:nginx机制介绍(有点晦涩,界面不好看)、nginx入门介绍-简书系列文章(言简意赅)

nginx下载安装,分为mac和windows。
mac可见:mac下安装nginx windows可见(未亲测):win下安装nginx

以mac为例,首先我们需要安装homebrew,这是macOS缺失的软件包管理器,具体可查看homebrew文档

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"

然后,用brew安装nginx

brew install nginx

可使用 nginx -v测试是否安装好,然后启动

nginx

打开浏览器访问:localhost:8080,会看到nginx的welcome首页,表示nginx已安装并启动
关闭nginx也很简单,执行

nginx -s stop

2、nginx配置

nginx.conf文件通常是安装在/usr/local/etc/nginx/nginx.conf目录下,基本我们对nginx的配置都在这个文件中进行,关于这个文件配置的构成,可见参考文档

可能用到的基本操作命令

nginx -v #查看nginx版本及基本配置
nginx -t #测试nginx.conf配置是否有效

cat nginx.conf # 查看nginx.conf文件
vim nginx.conf # 编辑conf文件 i 进入insert模式
:wq # 保存并退出

nginx -s reload # 重新加载配置文件
nginx -s reopen # 重新加载日志
nginx -s stop # 停止 nginx

配置本地web应用,参考如下nginx.conf配置文件(示例

# 全局块,Nginx 服务器处理并发任务数
worker_processes  1; 
# events块,这里设置的是每个 work process 支持的最大连接数为 1024
events {
    worker_connections  1024;
}
# 主要配置,功能
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    // 这是自带的server配置,代理了安装nginx时自带的html文件
    server {
        listen       8080; # 监听端口
        server_name  localhost;
        location / {
            root   html; # 设置本地网络文件夹路径
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
    # 每个 http 块可以包括多个 server 块,而每个 server 块就相当于一个虚拟主机。
    #这里可将监听的端口、服务名,代理到location中的本地文件
    server {
        listen       8085; # 监听端口
        server_name  localhost;
        # location也可以配置多个
        location / {
            root   /Users/liuliu/Desktop/prd-app; # 设置你本地要代理的文件夹路径
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
    include servers/*;
}

配置完文件之后,本地测试一下nginx -t,没问题的话然后启动nginx -s reload,访问localhost:8085,则可以看到对应的页面了

这里针对最常用的server配置单独说一下

以上为代理本地文件,那对于服务器上的文件,指定域名,要怎么配置呢?参考菜鸟配置详解范例

server {
        listen       80; # 对域名,默认配置为80端口
        server_name  test.nginx.com; # 域名
        location / { # locatino块配置请求的路由,以及各种页面的处理情况
           proxy_pass  http://localhost:13626/; #请求转向localhost定义的服务器列表
        }
    }