openresty (nginx)

  • OpenResty® 是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。

  • OpenResty® 通过汇聚各种设计精良的 Nginx 模块(主要由 OpenResty 团队自主开发),从而将 Nginx 有效地变成一个强大的通用 Web 应用平台。这样,Web 开发人员和系统工程师可以使用 Lua 脚本语言调动 Nginx 支持的各种 C 以及 Lua 模块,快速构造出足以胜任 10K 乃至 1000K 以上单机并发连接的高性能 Web 应用系统。

  • OpenResty® 的目标是让你的Web服务直接跑在 Nginx 服务内部,充分利用 Nginx 的非阻塞 I/O 模型,不仅仅对 HTTP 客户端请求,甚至于对远程后端诸如 MySQL、PostgreSQL、Memcached 以及 Redis 等都进行一致的高性能响应。

基础依赖包

yum install pcre-devel openssl-devel gcc curl
#开发库依赖包

yum方式安装

sudo yum install yum-utils
sudo yum-config-manager --add-repo https://openresty.org/package/centos/openresty.repo
#添加repo库

yum install openresty
#安装软件包

编译方式安装

下载和编译安装

wget -c https://openresty.org/download/openresty-1.13.6.2.tar.gz
tar zxvf openresty-*.gz
cd  openresty-*
./configure --with-http_stub_status_module --with-http_v2_module --with-http_realip_module

make && make install

快捷方式

ln -s /usr/local/openresty/nginx  /usr/local/nginx
ln -s  /usr/local/nginx/sbin/nginx  /bin/
#nginx快捷方式

检查

ldd $(which /usr/local/nginx/sbin/nginx)
#查看lib文件

配置文件

user  www;
worker_processes  2; #cpu 核数


events {
    worker_connections  1024; #数值根据压测调优
}


http {
    include       mime.types;
    default_type  application/octet-stream;
    log_format  main    '{"timestamp":"$time_iso8601",'
                        '"remote_addr":"$remote_addr",'
                        '"remote_user":"$remote_user",'
                        '"time_local":"$time_local",'
                        '"request":"$request",'
                        '"response_time":$request_time,'
                        '"status":"$status",'
                        '"body_bytes_sent":"$body_bytes_sent",'
                        '"http_referer": "$http_referer",'
                        '"http_user_agent":"$http_user_agent",'
                        '"http_x_forwarded_for":"$http_x_forwarded_for",'
                        '"server_name":"$server_name",'
                        '"upstream_addr":"$upstream_addr",'
                        '"upstream_response_time":"$upstream_response_time",'
                        '"upstream_status":"$upstream_status"'
                        '}';

    access_log  access.log  main; #默认日志路径
    server_tokens off; #隐藏版本号
    charset utf-8; # 编码默认utf-8

    client_max_body_size 200m; #内容长度相关
    client_header_buffer_size 512k;
    large_client_header_buffers 4 512k;


    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    types_hash_max_size 2048;

    keepalive_timeout   65;

    client_header_timeout 30;
    client_body_timeout 30;

   proxy_ignore_client_abort on;
    # 499解决,不主动关闭客户端连接。
    proxy_connect_timeout 5;
    proxy_read_timeout 60;
    proxy_send_timeout 5;

    proxy_buffer_size 16k;
    proxy_buffers 4 64k;
    proxy_busy_buffers_size 128k;
    proxy_temp_file_write_size 128k;

    gzip on;
    gzip_min_length 1k;
    gzip_comp_level 4;
    gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript  image/jpeg image/gif image/png font/ttf font/otf image/svg+xml;
    gzip_vary on;

    # lua_waf
    lua_shared_dict limit 50m;
    lua_shared_dict blackip 50m;
    lua_package_path "/usr/local/nginx/conf/waf/?.lua";
    init_by_lua_file  /usr/local/nginx/conf/waf/init.lua;
    access_by_lua_file /usr/local/nginx/conf/waf/access.lua;

    # nginx status
    server {
        listen  18118;
        server_name 127.0.0.1;

        location /ngx_status {
        stub_status on;
        access_log off;
        allow 127.0.0.1;
        deny all;
        }
    }

    include /usr/local/nginx/conf/vhosts/*.conf;#配置文件存放区域
}

vhosts null.conf

server {
listen 80 default_server;
server_name _;
return 444;
access_log  /usr/local/nginx/logs/default.log;
}
#禁止ip直接访问

初始配置

mkdir  /usr/local/nginx/conf/vhosts/

mkdir /www
groupadd www
#添加www组
useradd  -M -s /sbin/nologin -g www  -d /www www
#添加www用户
chmod 770 /www && chown -R www:www /www

启动/测试/载入

nginx #启动nginx
nginx -t #检测配置文件
nginx -s reload #载入修改配置

日志分割方法

/etc/logrotate.d/openresty

/usr/local/openresty/nginx/logs/*log {
     daily
    missingok
    rotate 7
    notifempty
    sharedscripts
    postrotate
        [ ! -f /usr/local/openresty/nginx/logs/nginx.pid ] || kill -USR1 `cat /usr/local/openresty/nginx/logs/nginx.pid`
    endscript
}

更新logrotate配置

logrotate /etc/logrotate.conf

阿里云网站架构例子

WAF - SLB - NGINX (https网站基于安全)

WAF - 配置ssl证书 - 跳转443

SLB - tcp 负载80

web服务 - tcp 监听80 (不用配置证书)

Nginx Server 配置

upstream pay_cluster{
        server 172.16.xxx.1:7000;
        server 172.16.xxx.2:7000;
}

server {
        listen 80;
        server_name pay.xxx.net;

location / {
        proxy_pass  http://pay_cluster;


        proxy_set_header Host $host;
        proxy_set_header   X-Real-IP        $remote_addr;
        proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
        proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
    }
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • nginx 常用配置

    daily: 日志文件将按天轮循 weekly: 日志文件将按周轮循 monthly: 日志文件将按月轮循 rotate 7: 一次存储7个日志文件。时间最久的...

    晴天Online
  • nginx 最大连接压测和调优

    nginx是非常高性能的web服务,交付web服务时我非常想知道它究竟能承载的多少并发量??我们知道影响服务性能的因素有很多如出口带宽、磁盘io、内存和cpu资...

    晴天Online
  • 基于svn的团队文档管理

    晴天Online
  • Nginx配置文件功能注释

    最近在学配置Nginx做均衡负载,首先最重要的是Nginx的配置文件,参考网上查到的资料,并结合实践, 将该配置文件的详细功能注释在这里做下笔记,方便今后查阅。...

    joshua317
  • transition-delay 属性——动画示例

    transition-delay 规定动画在过渡效果开始等待的时间。值以秒(s)或毫秒(ms)为单位,表明动画过渡效果将在何时开始。取值为正时会延迟一段时间...

    Html5知典
  • C语言结构体深度解析

    做了挺久的开发,对于C这种东西,我不敢说自己已经精通了,毕竟还是有许多细节在学习的过程中会遗忘,然后再通过实践慢慢去一点点捡回来。所以只能算是熟练级别。

    morixinguan
  • 【入门篇】让Jetson TX2火力全开的秘密原来在这里

    Jetson Tegra系统的应用涵盖越来越广,相应用户对性能和功耗的要求也呈现多样化。为此NVIDIA提供一种新的命令行工具,可以方便地让用户配置CPU状...

    GPUS Lady
  • 大数据时代商业银行的策略

      尽管大数据对商业银行的影响目前而言还比较小,但从发展趋势看,要充分认识大数据的颠覆性影响。各银行必须未雨绸缪,早做布局,从管理体系建设、具体运用模式方面不...

    腾讯研究院
  • 机器学习(十五) K-means 算法

    已知观测集 (x1,x2,...,xn),其中每个观测都是一个 d-维实向量,k-平均聚类要把这 n个观测划分到k个集合中(k≤n),使得组内平方和(WCS...

    致Great
  • kafka的安装与使用

    目前项目中使用的是activemq和rabbitmq,现在简单学习一下kafka.搭了个zokeeper集群,kafka集群,作为自己kafka的一个入门. k...

    编程软文

扫码关注云+社区

领取腾讯云代金券

玩转腾讯云 有奖征文活动