nginx - https

1、http 重定向

[图片上传失败...(image-ca2188-1534050760876)]

2、一台主机,同时提供http与https两种访问方式

1. nginx.conf

  • 1)域名站点最终通过https访问
  • 2)http首先访问nginx后,重定向到https访问(http => nginx => https)
http
{
  # 1、https 443端口:https://www.domain.com
  server
  {
    listen 443;
    ssl on;
    server_name domain.com; //你的域名
    index index.html index.htm index.php default.html default.htm default.php;
    ssl_certificate /usr/local/nginx/cert/user.medsci-tech.com/214020580630662.pem;
    ssl_certificate_key /usr/local/nginx/cert/user.medsci-tech.com/214020580630662.key;
    ssl_session_timeout 5m;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;

    root /home/wwwroot/web/public;//项目根目录
    include laravel.conf;
    #error_page 404 /404.html;
    include enable-php.conf;
    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
    {
      expires 30d;
    }
    location ~ .*\.(js|css)?$
    {
      expires 12h;
    }
  }

  # 2、http 80端口:http://www.domain.com, 重定向到 https 443端口
  server 
  {
    listen 80;
    server_name domain.com;

    ## 重定向到 443 https 方式访问
    rewrite ^/(.*) https://$server_name$request_uri? permanent;
  }
}
  • 1)nginx服务部署所在主机,直接作为【http服务器】
  • 2)同时提供【80端口】与【443】端口
  • 3)http重定向为https
  • 4)如果是【自制ssl证书】,则需要在【app客户端】预先存放【ssl公钥证书】
  • 5)如果是【权威认证机构颁发的ssl证书】,则不需要做什么处理

1. 直接使用 http

[图片上传失败...(image-199c6e-1534050760876)]

2. http 转发为 https

[图片上传失败...(image-287921-1534050760876)]

3、【nginx 转发服务】与【nginx http服务】分离

1. 逻辑流程

[图片上传失败...(image-f5f4f5-1534050760876)]

2. nginx 服务器

nginx 服务器类型 服务器编号
nginx 转发服务器 A 8080
nginx http web 服务器 B

3.【A主机】nginx.conf

server 
{
  listen       8080;
  server_name  domain.com;
  
  # 1、将对localhost访问由/opt/app/lua/dep.lua进行处理
  location /
  {
    default_type "text/html"; 
    content_by_lua_file /opt/app/lua/dep.lua; # 指定由lua文件处理http请求
    #add_after_body "$http_x_forwarded_for";
  }

  ############################################################
  # 2.1、http 协议进行转发
  location @go_http
  {
    # 访问nginx【http】服务器的http协议时,
    # => 使用 proxy_pass 转发
    # => proxy_pass【不会让地址栏发生变化】
    proxy_pass http://【nginx http服务器ip】:80; 
  }

  ############################################################
  # 2.2、https 协议转发进行转发
  location @go_https
  {
    # 访问nginx【https】服务器的http协议时
    # => 使用 rewrite 重定向
    # => rewrite 【让地址栏发生变化,重新发起https连接访问】
    # => 如果是【自制ssl证书】,则需要在【app客户端】预先存放【ssl公钥证书】
    # => 如果是【权威认证机构颁发的ssl证书】,则不需要做什么处理
    rewrite ^/(.*) https://$server_name$request_uri? permanent;
  }

  error_page   500 502 503 504 404  /50x.html;
  location = /50x.html {
    root   /usr/share/nginx/html;
  }
}

4.【A主机】/opt/app/lua/dep.lua

1. lua 源文件

-- 查询memcache等数据库服务,
-- 判断ip是否包含在http或https协议访问配置中

-- 走http协议
if res == "1" then
  ngx.exec("@go_http")
  return
end

-- 走htts协议
ngx.exec("@go_https")

2. ngx.exec("@go_https")

location @go_https
{
  rewrite ^/(.*) https://$server_name$request_uri? permanent;
}

3. ngx.exec("@go_http")

location @go_http
{
  proxy_pass http://【nginx http服务器ip】:80; 
}

会自动重定向为上面的https链接访问。

5.【B主机】nginx.conf

http
{
  # 1. 443端口 https://www.domain.com
  server
  {
    listen 443;
    ssl on;
    server_name localhost; //你的域名
    index index.html index.htm index.php default.html default.htm default.php;
    ssl_certificate /usr/local/nginx/cert/user.medsci-tech.com/214020580630662.pem;
    ssl_certificate_key /usr/local/nginx/cert/user.medsci-tech.com/214020580630662.key;
    ssl_session_timeout 5m;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;

    root /home/wwwroot/web/public;//项目根目录
  }

  # 2. 80端口 https://www.domain.com
  server 
  {
    listen 80;
    server_name localhost;

    root /home/wwwroot/web/public;//项目根目录
  }
}
  • 1)提供【80端口】的http请求处理
  • 2)也提供【443端口】的http请求处理

6. rewrite 与 proxy_pass

rewrite 重定向 让客户端重新发起连接,访问新的url地址,地址栏会发生变化
proxy_pass 代理转发 直接将客户端请求塞给另外服务器处理,地址栏【不发生】变化

4、nginx 497 响应码

1. 核心

  • 1、当网站只允许https访问时,当用http访问时nginx会报出497错误码
  • 2、利用error_page命令,将497状态码的链接重定向到https域名

2. nginx.conf

server 
{
  listen       127.0.0.1:443;  #ssl端口 
  listen       127.0.0.1:80;   #用户习惯用http访问,加上80,后面通过497状态码让它自动跳到443端口 
  server_name  dev.wangshibo.com;

  #为一个server{......}开启ssl支持 
  ssl                  on; 
  
  #指定PEM格式的证书文件  
  ssl_certificate      /etc/nginx/wangshibo.pem;  
  
  #指定PEM格式的私钥文件 
  ssl_certificate_key  /etc/nginx/wangshibo.key; 
      
  #让http请求重定向到https请求  
  error_page 497  https://$host$uri?$args; 

  location ~ / {
  root /var/www/html/8080;
  index index.html index.php index.htm;
  }
}

5、proxy_redirec

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

推荐阅读更多精彩内容