linux安装nginx

1、安装依赖包

yum -y install gcc pcre-devel zlib-devel openssl openssl-devel

2、wget -c https://nginx.org/download/nginx-1.16.1.tar.gz

3、tar -zxvf nginx-1.16.1.tar.gz

4、cd nginx-1.16.1

5、配置 ./configure --prefix=/usr/nginx --with-http_ssl_module

6、编译 

make

make install

7、./sbin/nginx -t  测试安装ok是否

8、cd sbin

./nginx   启动nginx

9、curl http://ip   回车  测试nginx启动与否


nginx配置ssl证书

1、/usr/nginx/sbin/nginx -V 查看是否支持ssl

如果出现 configure arguments: --with-http_ssl_module, 则已安装(下面的步骤可以跳过,进入 nginx.conf 配置)。

2、cd nginx  

mkdir cert

将ssl证书文件放在cert文件夹下

3、http{

    #http节点中可以添加多个server节点

    server{

        #监听443端口

        listen 443;

        #对应的域名,把baofeidyz.com改成你们自己的域名就可以了

        server_name baofeidyz.com;

        ssl on;

        #从腾讯云获取到的第一个文件的全路径

        ssl_certificate /etc/ssl/1_baofeidyz.com_bundle.crt;

        #从腾讯云获取到的第二个文件的全路径

        ssl_certificate_key /etc/ssl/2_baofeidyz.com.key;

        ssl_session_timeout 5m;

        ssl_protocols TLSv1 TLSv1.1TLSv1.2;

        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;

        ssl_prefer_server_ciphers on;

        #这是我的主页访问地址,因为使用的是静态的html网页,所以直接使用location就可以完成了。

        location / {

                #文件夹

                root /usr/local/service/ROOT;

                #主页文件

                index index.html;

        }

    }

    server{

        listen 80;

        server_name baofeidyz.com;

        rewrite ^/(.*)$ https://baofeidyz.com:443/$1 permanent;    }

}

4、重启nginx


【注】

nginx+lua实现oss private nginx转发

方法如下:

①安装nginx+lua

https://blog.csdn.net/qq_31725371/article/details/85226116

②配置nginx和lua脚本

https://developer.aliyun.com/article/8532


oss_auth.lua

-- has been sorted in alphabetical order

local signed_subresources = {

  'acl',

  'append',

  'bucketInfo',

  'cname',

  'commitTransition',

  'comp',

  'cors',

  'delete',

  'lifecycle',

  'location',

  'logging',

  'mime',

  'notification',

  'objectInfo',

  'objectMeta',

  'partData',

  'partInfo',

  'partNumber',

  'policy',

  'position',

  'referer',

  'replication',

  'replicationLocation',

  'replicationProgress',

  'requestPayment',

  'response-cache-control',

  'response-content-disposition',

  'response-content-encoding',

  'response-content-language',

  'response-content-type',

  'response-expires',

  'restore',

  'security-token',

  'tagging',

  'torrent',

  'uploadId',

  'uploads',

  'versionId',

  'versioning',

  'versions',

  'website'

}


function string.startswith(s, start)

  return string.sub(s, 1, string.len(start)) == start

end

local function get_canon_sub_resource()

  local args = ngx.req.get_uri_args()

  -- lower keys

  local keys = {}

  for k, v in pairs(args) do

      keys[k:lower()] = v

  end

  -- make resource string

  local s = ''

  local sep = '?'

  for i, k in ipairs(signed_subresources) do

      v = keys[k]

      if v then

        -- sub table

        v = type(v) == 'table' and v[1] or v

        s = s .. string.format("%s%s=%s", sep, k, v)

        sep = '&'

      end

  end

  return s

end

local function get_canon_resource()

  resource = ''

  object = ngx.unescape_uri(ngx.var.uri)

  sub = get_canon_sub_resource() 

  return string.format("/%s%s%s", ngx.var.oss_bucket, object, sub)

end 

local function get_canon_headers()

  -- default: <lowerkey, value>

  local headers = ngx.req.get_headers()

  local keys = {}

  for k, v in pairs(headers) do

      if string.startswith(k, 'x-oss-') then

        -- client must assemble the same header keys

        if type(v) ~= 'string' then return nil end

        table.insert(keys, k)

      end

  end

  -- sorted in alphabetical order

  table.sort(keys)

  for i, key in ipairs(keys) do

      keys[i] = key .. ':' .. headers[key] .. '\n'

  end

  return table.concat(keys)

end

local function calc_sign(key, method, md5, type_, date, oss_headers, resource)

    -- string_to_sign:

    -- method + '\n' + content_md5 + '\n' + content_type + '\n'

    -- + date + '\n' + canonicalized_oss_headers + canonicalized_resource

    local sign_str = string.format('%s\n%s\n%s\n%s\n%s%s',

    method, md5, type_,

    date, oss_headers, resource)

    ngx.log(ngx.ERR, "SignStr:", sign_str, "\n")

    local sign_result = ngx.encode_base64(ngx.hmac_sha1(key, sign_str))

    return sign_result, sign_str

end 

local function oss_auth()

  -- ngx.log(ngx.INFO, 'auth')

  --local method = ngx.var.request_method

  local method = ngx.req.get_method()

  local content_md5 = ngx.var.http_content_md5 or ''

  local content_type = ngx.var.http_content_type or ''

  -- get date

  local date = ngx.var.http_x_oss_date or ngx.var.http_date or ''

  if date == '' then

      date = ngx.http_time(ngx.time())

      -- ngx.log(ngx.INFO, 'Date:', date)

      ngx.req.set_header('Date', date)

  end

  local resource = get_canon_resource()

  local canon_headers = get_canon_headers()

  local sign_result, sign_str = calc_sign(ngx.var.oss_auth_key, method, content_md5,

  content_type, date, canon_headers, resource)

  -- ngx.log(ngx.INFO, 'sign string:', sign_str)

  -- ngx.log(ngx.INFO, 'sign string len:', string.len(sign_str))

  local auth = string.format("OSS %s:%s", ngx.var.oss_auth_id, sign_result)

  ngx.req.set_header('Authorization', auth)

  ngx.exec("@oss")

end 

-- main

res = oss_auth()

if res then

  ngx.exit(res)

end

nginx.conf配置文件

location / {

            root  html;

            index  index.html index.htm;

            set $oss_bucket "xxxx";

            set $oss_auth_id "xxxx";

            set $oss_auth_key "xxxx";

            rewrite_by_lua_file "/soft/nginx/conf/oss_auth.lua";

        }

        location @oss {

            proxy_pass https://xxx.oss-cn-hangzhou.aliyuncs.com;

        }

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