nginx小记

nginx代理配置小记

在进行月度考核作业的时候,由于需要使用天气api进行数据查询,因此在网上找到了气象大数据平台这个网站,但是在使用该网站的 api 的时候,出现了跨域问题,一般情况下在使用 Jquery 封装的 ajax 请求时,如果要兼容 IE 低版本,那么需要加上jQuery.support.cors = true;,该网站在服务端设置了跨域限制问题,因此解决办法就改为了使用nginx反向代理实现 http 请求。

nginx 配置时,需要在nginx 官网下载 nginx,然后解压到本地硬盘中,在 nginx 的文件夹中,找到 conf 文件夹,使用记事本打开 nginx.conf 对里面的内容进行编辑,这次 nginx 的代理配置如下。

重中之重,nginx 每个指令后必须有分号结束,否则 nginx 服务无法成功启动。

#user  nobody; # 配置用户或者组,默认为nobody
worker_processes  1;  # 允许生成的进程数,默认为1
#全局块,配置影响nginx全局的指令。一般有运行nginx服务器的用户组,nginx进程pid存放路径,日志存放路径,配置文件引入,允许生成worker process数等。
# 指定日志路径,日志级别
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;
# 指定nginx进程文件存放地址
#pid        logs/nginx.pid;

# 配置影响nginx服务器或与用户的网络连接
events {
    worker_connections  1024; # 最大连接数,默认为512
}


http {
    include       mime.types;  #文件扩展名与文件类型映射表
    default_type  application/octet-stream; # 默认文件类型,默认为text/plain

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on; # 允许sendfile方式传输文件,默认为off,可以在http块,server块,location块
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65; #连接超时时间,默认为75s,可以在http块,server块,location块

    #gzip  on;
	# 一般情况下 http下可以用多个server进行配置
    server {
        listen       5500; # 监听端口
        server_name  localhost; # 监听地址
        root E:\demo\weather-plugin\weatherPlugin; # 静态资源根目录

        #charset koi8-r;

        #access_log  logs/host.access.log  main;
	    #查找在静态资源根目录中的对应文件
        #$uri 查找该文件夹一级目录中是否有该文件
        #$uri/ 查找该文件夹二级目录中是否有该文件
        #@router 可以解释为@router默认会去读取前端的首页
        location / {
		   try_files $uri $uri/ @router;
            index  index.html index.htm;
        }
        # 使用正则表达式匹配路径+重写uri路径
        location ^~ /common/ {
             proxy_pass 'http://api.weatherdt.com/common/'; # 反向代理的地址
             # 一些反向代理的配置(可选择性配置)
             # 用于设置发送到后端服务器的requset的请求头
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #后端的Web服务器可以通过X-Forwarded-For获取用户真实IP
			proxy_set_header X-Forwarded-Proto $scheme; # 用来确定客户端与代理服务器或者负载均衡服务器之间的连接所采用的传输协议(HTTP 或HTTPS)后端可以通过读取header X-Forwarded-Proto来获得对应的scheme。
			proxy_set_header X-Forwarded-Port $server_port;  #表示浏览器在访问时的实际端口时,如nginx提供http服务,则为80,如果是https,则为 443。如果为标准服务,此项可以不用设置,仅用于非标准端口时才使用
             # nginx使用Proxy模块时,默认的读取超时时间是60s
			proxy_connect_timeout 300s; #后端服务器连接的超时时间_发起握手等候响应超时时间
			proxy_send_timeout 300s; # 后端服务器数据回传时间_就是在规定时间之内后端服务器必须传完所有的数据
			proxy_read_timeout 300s; # 连接成功后_等候后端服务器响应时间_其实已经进入后端的排队之中等候处理(也可以说是后端服务器处理请求的时间)
        }
		# 配置@router的路径进行重定向
		location @router {
			rewrite ^.*$ /index.html last;
		}
	    # 在部署多套系统时,使用nginx反向代理服务。如果这时候服务突然宕机了,或者由于服务重新部署导致nginx代理的地址访问失败,会直接在用户的浏览器上显示nginx自带错误页面,如:50x.html,因服务问题导致错误,重定向到静态页面。
        location = /50x.html {
            root   html;
        }

    }

}