nginx

Windows环境************************************************************************************

Nginx可以静态页面的服务器、静态文件缓存服务器、网站反向代理、负载均衡服务器等,只需要修改配置文件即可

反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器

① 下载nginx

http://nginx.org/en/download.html                //官网下载地址

Mainline version 主版本

Stable version 稳定版本

可选择任意版本(如: nginx/Windows-1.13.6)下载(*.gz是Linux系统压缩包,*.zip是Windows系统压缩包)

② 解压缩nginx到自定义目录(如nginx)中

③ nginx cmd命令

 start nginx        //启动nginx

 nginx -s stop      //快速停止nginx,可能不保存相关信息,并迅速结束web服务

 nginx -s reload    //因改变了nginx相关配置,重新加载配置而重载

 nginx -s quit     //平稳关闭nginx,保存相关信息,有安排的结束web服务

  nginx -t           //检查配置文件是否正确

  nginx -s reopen    //重新打开日志文件

  nginx -v           //查看nginx版本号

④ 启动nginx,在浏览器地址栏输入127.0.0.1,显示nginx首页,即配置成功

   此时,nginx可作为静态资源服务器,html 文件夹即是web服务器文件夹

⑤ 配置反向代理

conf/nginx.conf:

http {

  server {

    listen 80;                #监听端口

    server_name localhost;    #指定访问的域名

    #charset koi8-r;

    #access_log logs/host.access.log main;

    location / {

      root html;                     #文件根目录

      index index.html index.htm;    #默认起始页

    }

    location/apis{                       #apis: 配置自定义api请求地址

      rewrite ^.+apis/?(.*)$ /$1 break;    #apis: 配置的api请求地址

      include uwsgi_params;

      proxy_pass http://m.baibaocp.cn;     #真正的api地址(即要访问的资源地址)

    }

  }

}

前端的 js (使用jQuery):

$.ajax({

url: "/apis/plsw/Tablenew?num=60&tag=1&omit=1",        // apis: 配置的api请求地址

  success: function(data){ }

});

将此文件放在 html 文件夹下,使用127.0.0.1的IP地址即可跨域访问设置的真正的api地址

⑥ nginx配置CORS,让不在html文件夹下的文件也能跨域

一、简单配置

conf/nginx.conf:

location/apis{        #需要访问的nginx的api请求地址

  add_header 'Access-Control-Allow-Origin' 'https://a.com';    #授权a.com可以请求

                                                                也可设置为通配符*

  add_header 'Access-Control-Allow-Credentials' 'true';        #该请求是否可以被暴露

  add_header 'Access-Control-Allow-Methods' 'GET';             #指定请求的方法,可以是GET、POST、PUT、DELETE、HEAD,也可设置为通配符*

  ...              #其它配置指令

}

location/apis{

 add_header 'Access-Control-Allow-Origin' '*';       #设置为允许任何域的请求

  ...

}

前端的任意文件下的 js (使用jQuery):

$.ajax({

  url: "http://127.0.0.1/apis/plsw/Tablenew?num=60&tag=1&omit=1",    //nginx地址+定义的api

  url: "http://192.168.1.175本机IP地址/apis/plsw/Tablenew?num=60&tag=1&omit=1",

  success: function(data){

    if(typeof data != 'object'){        //判断是不是对象,是否需要从json转换为对象

      var data = $.parseJSON(data);

    }

    console.log(data);

  }

});

二、高级配置

conf/nginx.conf:

location / {

  if($request_method = 'OPTIONS') {

    add_header 'Access-Control-Allow-Origin' '*';

    add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';

    add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';

    add_header 'Access-Control-Max-Age' 1728000;        #设置有效期

    add_header 'Content-Type' 'text/plain charset=UTF-8';

    add_header 'Content-Length' 0;

    return 204;

  }

  if($request_method = 'POST') {

    add_header 'Access-Control-Allow-Origin' '*';

    add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';

    add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';

  }

  if($request_method = 'GET') {

    add_header 'Access-Control-Allow-Origin' '*';

    add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';

    add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';

  }

  ...

}

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)${

  expires 30d;    #设置30天过期

}

location ~ .*\.(js|css)?${

  expires 1h;     #设置1小时过期

}

注意: nginx的每个指令必须有分号结束

      配置文件的使用 # 单行注释

      每次设置好配置文件后,都需要重新加载nginx的配置文件,或重启nginx

_______________________________________________________________________________________________

修改服务器的根目录:

conf/nginx.conf:

location / {

  root www/src;              #将原本的html根目录改为www/src,或E:\1webdev\hongdan\src

                             #若以/开头,则从所在盘符的根目录开始查找

  index index.html index.htm;

}

conf/nginx.conf:

nginx不允许向静态文件提交post方式的请求,否则会返回"HTTP/1.1 405 Method not allowed"错误

解决方法: 重定向405错误码到200

server{

  ...

  location ~ (.*\.json) {

    root  E:\1webdev;              #root为站点的根目录

    error_page405 =200 $1;        #空格不能错

  }

  ...

}

conf/nginx.conf:

使用nginx架设服务器,向外部提供json数据(允许使用json格式的数据)

location ~ (.*\.json) {

  add_header 'Access-Control-Allow-Origin' '*';    #使客户端可访问此接口

  root  E:\1webdev;                                #*.json文件放在此文件夹中

  error_page 405 =200 $1;

}

如提供的url: http://192.168.1.11/zjzh/syxw/html/001.json

负载均衡***************************************************************************************

公司会建立很多的服务器,这些服务器组成服务器集群,当用户访问网站时,先访问一个中间服务器,再让这个中间服务器在服务器集群中选择一个压力较小的服务器,然后将该访问请求引入选择的服务器,分担了服务器的压力,避免服务器崩溃

conf/nginx.conf:

worker_processes 1;               #工作进程数,和CPU核数相同

events {

  worker_connections 1024;        #每个进程允许的最大连接数

}

http {

  upstream upstreamname {         #upstream模块,用于负载均衡,语法: upstream name {}

    ip_hash;                      #第一次访问该服务器后记录,之后再访问都是该服务器

    server 123.125.115.110;

    server 111.202.103.60;

  }

  server {                        #用于反向代理

    listen 80;

    location / {

      proxy_pass http://upstreamname;

    }

  }

}

nginx做反向代理时携带Cookie********************************************************************

方法①

location /m_bbcp{

  add_header  'Access-Control-Allow-Origin' '*';

  rewrite ^.+m_bbcp/?(.*)$ /$1 break;

  include uwsgi_params;

  proxy_set_header 'Cookie' 'PHPSESSID=ck4s7o2mjdihmd7gbv6g9cbdj0; f3df7bfcdf28dbdc9c124f886cf72fba=36fb49d8d5c4381b725b944771a53356925f3797a%3A4%3A%7Bi%3A0%3Bs%3A6%3A%22136682%22%3Bi%3A1%3Bs%3A0%3A%22%22%3Bi%3A2%3Bi%3A604800%3Bi%3A3%3Ba%3A0%3A%7B%7D%7D';                                  # 设置携带的Cookie

proxy_passhttp://m.baibaocp.cn;# 真正的api地址(即要访问的资源地址)

}

方法②

注意: 先在浏览器地址栏查看原本的接口是否需要跨域才能显示数据,并在$.ajax()中做出相应的更改

反向代理到其它网站*****************************************************************************

location / {                          # 需要在 / 配置,否则一些资源请求不到

  proxy_pass http://127.0.0.1:81/;    # 所有的请求都会由当前端口,转向81端口

}

server {                              # 添加多个服务器

  listen        8094;

  #listen       localhost:8094;

server_namelocalhost  alias  another.alias;

  location / {

proxy_passhttp://netease.zhongkezhihe.cn;  //当使用本机ip通过该端口时,

                                                  服务端会以此地址为准,客户端会以本机ip为准

  }

}

注意:

① 修改hosts也需要重启nginx

② 若指向的服务器有cookie信息用来判断域名,则需要清理cookie才能使服务器区分出不同的域名

重定向******************************************************************************************

将 / 重定向到 /home

方法①

location = / {

  return 301 /home;

}

方法②

location / {

  rewrite ^/ /home permanent;

}

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,732评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,496评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,264评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,807评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,806评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,675评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,029评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,683评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,704评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,666评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,773评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,413评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,016评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,204评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,083评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,503评论 2 343

推荐阅读更多精彩内容