部署第三方依赖库
部署zlib
tar -zxvf zlib-1.2.11.tar.gz
cd zlib-1.2.11
./configure -prefix=/opt/openResty/zlibDir 指定安装目录
make
make install
部署pcre
tar -zxvf pcre-8.40.tar.gz
cd pcre-8.40
./configure -prefix=/opt/openResty/pcreDir
yum install -y gcc gcc-c++
make
make install
tar -zxvf openssl-1.0.2l.tar.gz
./config --prefix=/opt/openResty/opensslDir
make
make install
unzip nginx-http-concat-master.zip
安装naxsi-master
unzip naxsi-master.zip
部署openResty
tar -zxvf openresty-1.11.2.2.tar.gz
cd openresty-1.11.2.2
./configure --prefix=/opt/openResty/openRestyDir \
--with-pcre=/opt/openResty/pcre-8.40 \
--with-openssl=/opt/openResty/openssl-1.0.2l \
--with-zlib=/opt/openResty/zlib-1.2.11 \
--with-http_stub_status_module \
--add-module=/opt/openResty/nginx-http-concat-master \
--add-module=/opt/openResty/naxsi-master/naxsi_src \
--with-http_realip_module \
--with-http_ssl_module \
--with-luajit
export ZLIB_HOME=/opt/openResty/zlibDir
export PATH=$ZLIB_HOME/bin:$PATH
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ZLIB_HOME/lib
export PCRE_HOME=/opt/openResty/pcreDir
export PATH=$PCRE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$PCRE_HOME/lib
export OPENSSL_HOME=/opt/openResty/opensslDir
export PATH=$OPENSSL_HOME/bin:$PATH
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib:$OPENSSL_HOME/lib
export OPENRESTY_HOME=/opt/openResty/openRestyDir
export PATH=$OPENRESTY_HOME/bin:$PATH
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$OPENRESTY_HOME/lib
让配置文件立即生效
source /etc/profile
最好重启系统
openResty配置文件
配置位置:/opt/openResty/openRestyDir/nginx/conf/nginx.conf文件配置
1) nginx配置文件
配置文件主要由四部分组成:main(全区设置),server(主机配置),upstream(负载均衡服务器设置),和location(URL匹配特定位置设置)。
1)全局变量
1. #Nginx的worker进程运行用户以及用户组
2. #user nobody nobody;
3. #Nginx开启的进程数
4. worker_processes 1;
5. #worker_processes auto;
6. #以下参数指定了哪个cpu分配给哪个进程,一般来说不用特殊指定。如果一定要设的话,用0和1指定分配方式.
7. #这样设就是给1-4个进程分配单独的核来运行,出现第5个进程是就是随机分配了。eg:
8. #worker_processes 4 #4核CPU
9. #worker_cpu_affinity 0001 0010 0100 1000
10.
11.
12. #定义全局错误日志定义类型,[debug|info|notice|warn|crit]
13. #error_log logs/error.log info;
14. #指定进程ID存储文件位置
15. #pid logs/nginx.pid;
16. #一个nginx进程打开的最多文件描述符数目,理论值应该是最多打开文件数(ulimit -n)与nginx进程数相除,但是nginx分配请求并不是那么均匀,所以最好与ulimit -n的值保持一致。
17. #vim /etc/security/limits.conf
18. # * soft nproc 65535
19. # * hard nproc 65535
20. # * soft nofile 65535
21. # * hard nofile 65535
22. worker_rlimit_nofile 65535;
2)事件配置
1. events {
2. #use [ kqueue | rtsig | epoll | /dev/poll | select | poll ]; epoll模型是Linux 2.6以上版本内核中的高性能网络I/O模型,如果跑在FreeBSD上面,就用kqueue模型。
3. use epoll;
4. #每个进程可以处理的最大连接数,理论上每台nginx服务器的最大连接数为worker_processes*worker_connections。理论值:worker_rlimit_nofile/worker_processes
5. #注意:最大客户数也由系统的可用socket连接数限制(~ 64K),所以设置不切实际的高没什么好处
6. worker_connections 65535;
7. #worker工作方式:串行(一定程度降低负载,但服务器吞吐量大时,关闭使用并行方式)
8. #multi_accept on;
9. }
3)http参数
1. #文件扩展名与文件类型映射表
2. include mime.types;
3. #默认文件类型
4. default_type application/octet-stream;
5.
6.
7. #日志相关定义
8. #log_format main '$remote_addr - $remote_user [$time_local] "$request" '
9. # '$status $body_bytes_sent "$http_referer" '
10. # '"$http_user_agent" "$http_x_forwarded_for"';
11. #定义日志的格式。后面定义要输出的内容。
12. #1.$remote_addr 与$http_x_forwarded_for 用以记录客户端的ip地址;
13. #2.$remote_user :用来记录客户端用户名称;
14. #3.$time_local :用来记录访问时间与时区;
15. #4.$request :用来记录请求的url与http协议;
16. #5.$status :用来记录请求状态;
17. #6.$body_bytes_sent :记录发送给客户端文件主体内容大小;
18. #7.$http_referer :用来记录从那个页面链接访问过来的;
19. #8.$http_user_agent :记录客户端浏览器的相关信息
20. #连接日志的路径,指定的日志格式放在最后。
21. #access_log logs/access.log main;
22. #只记录更为严重的错误日志,减少IO压力
23. error_log logs/error.log crit;
24. #关闭日志
25. #access_log off;
26.
27.
28. #默认编码
29. #charset utf-8;
30. #服务器名字的hash表大小
31. server_names_hash_bucket_size 128;
32. #客户端请求单个文件的最大字节数
33. client_max_body_size 8m;
34. #指定来自客户端请求头的hearerbuffer大小
35. client_header_buffer_size 32k;
36. #指定客户端请求中较大的消息头的缓存最大数量和大小。
37. large_client_header_buffers 4 64k;
38. #开启高效传输模式。
39. sendfile on;
40. #防止网络阻塞
41. tcp_nopush on;
42. tcp_nodelay on;
43. #客户端连接超时时间,单位是秒
44. keepalive_timeout 60;
45. #客户端请求头读取超时时间
46. client_header_timeout 10;
47.
48. #设置客户端请求主体读取超时时间
49.
50. client_body_timeout 10;
51.
52. #响应客户端超时时间
53.
54. send_timeout 10;
55.
56.
57. #FastCGI相关参数是为了改善网站的性能:减少资源占用,提高访问速度。
58. fastcgi_connect_timeout 300;
59. fastcgi_send_timeout 300;
60. fastcgi_read_timeout 300;
61. fastcgi_buffer_size 64k;
62. fastcgi_buffers 4 64k;
63. fastcgi_busy_buffers_size 128k;
64. fastcgi_temp_file_write_size 128k;
65.
66.
67. #gzip模块设置
68. #开启gzip压缩输出
69. gzip on;
70. #最小压缩文件大小
71. gzip_min_length 1k;
72. #压缩缓冲区
73. gzip_buffers 4 16k;
74. #压缩版本(默认1.1,前端如果是squid2.5请使用1.0)
75. gzip_http_version 1.0;
76. #压缩等级 1-9 等级越高,压缩效果越好,节约宽带,但CPU消耗大
77. gzip_comp_level 2;
78. #压缩类型,默认就已经包含text/html,所以下面就不用再写了,写上去也不会有问题,但是会有一个warn。
79. gzip_types text/plain application/x-javascript text/css application/xml;
80. #前端缓存服务器缓存经过压缩的页面
81.
82. gzip_vary on;
4)虚拟主机基本设置
1. #虚拟主机定义
2. server {
3. #监听端口
4.
5. listen 80;
6. #访问域名
7.
8. server_name localhost;
9. #编码格式,若网页格式与此不同,将被自动转码
10.
11. #charset koi8-r;
12. #虚拟主机访问日志定义
13.
14. #access_log logs/host.access.log main;
15. #对URL进行匹配
16.
17. location / {
18. #访问路径,可相对也可绝对路径
19.
20. root html;
21. #首页文件。以下按顺序匹配
22.
23. index index.html index.htm;
24. }
25.
26.
27. #错误信息返回页面
28. #error_page 404 /404.html;
29. # redirect server error pages to the static page /50x.html
30. #
31. error_page 500 502 503 504 /50x.html;
32. location = /50x.html {
33. root html;
34. }
35.
36.
37. #访问URL以.php结尾则自动转交给127.0.0.1
38.
39. # proxy the PHP scripts to Apache listening on 127.0.0.1:80
40. #
41. #location ~ \.php$ {
42. # proxy_pass http://127.0.0.1;
43. #}
44. #php脚本请求全部转发给FastCGI处理
45. # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
46. #
47. #location ~ \.php$ {
48. # root html;
49. # fastcgi_pass 127.0.0.1:9000;
50. # fastcgi_index index.php;
51. # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
52. # include fastcgi_params;
53. #}
54.
55.
56. #禁止访问.ht页面 (需ngx_http_access_module模块)
57.
58. # deny access to .htaccess files, if Apache's document root
59. # concurs with nginx's one
60. #
61. #location ~ /\.ht {
62. # deny all;
63. #}
64. }
65. #HTTPS虚拟主机定义
66. # HTTPS server
67. #
68. #server {
69. # listen 443 ssl;
70. # server_name localhost;
71. # ssl_certificate cert.pem;
72. # ssl_certificate_key cert.key;
73. # ssl_session_cache shared:SSL:1m;
74. # ssl_session_timeout 5m;
75. # ssl_ciphers HIGH:!aNULL:!MD5;
76. # ssl_prefer_server_ciphers on;
77. # location / {
78. # root html;
79. # index index.html index.htm;
80. # }
81. #}
5)Nignx状态监控
1. #Nginx运行状态,StubStatus模块获取Nginx自启动的工作状态(编译时要开启对应功能)
2. #location /NginxStatus {
3. # #启用StubStatus的工作访问状态
4. # stub_status on;
5. # #指定StubStaus模块的访问日志文件
6. # access_log logs/Nginxstatus.log;
7. # #Nginx认证机制(需Apache的htpasswd命令生成)
8.
9. # #auth_basic "NginxStatus";
10. # #用来认证的密码文件
11.
12. # #auth_basic_user_file ../htpasswd;
13. #}
14. 访问:http://IP/NginxStatus(测试就不加密码验证相关)
6)反向代理
1. #以下配置追加在HTTP的全局变量中
2.
3.
4. #nginx跟后端服务器连接超时时间(代理连接超时)
5. proxy_connect_timeout 5;
6. #后端服务器数据回传时间(代理发送超时)
7. proxy_send_timeout 5;
8. #连接成功后,后端服务器响应时间(代理接收超时)
9. proxy_read_timeout 60;
10. #设置代理服务器(nginx)保存用户头信息的缓冲区大小
11. proxy_buffer_size 16k;
12. #proxy_buffers缓冲区,网页平均在32k以下的话,这样设置
13. proxy_buffers 4 32k;
14. #高负荷下缓冲大小(proxy_buffers*2)
15. proxy_busy_buffers_size 64k;
16. #设定缓存文件夹大小,大于这个值,将从upstream服务器传
17. proxy_temp_file_write_size 64k;
18. #反向代理缓存目录
19. proxy_cache_path /data/proxy/cache levels=1:2 keys_zone=cache_one:500m inactive=1d max_size=1g;
20. #levels=1:2 设置目录深度,第一层目录是1个字符,第2层是2个字符
21.
22. #keys_zone:设置web缓存名称和内存缓存空间大小
23.
24. #inactive:自动清除缓存文件时间。
25.
26. #max_size:硬盘空间最大可使用值。
27.
28. #指定临时缓存文件的存储路径(路径需和上面路径在同一分区)
29. proxy_temp_path /data/proxy/temp
30.
31.
32. #服务配置
33. server {
34. #侦听的80端口
35. listen 80;
36. server_name localhost;
37. location / {
38. #反向代理缓存设置命令(proxy_cache zone|off,默认关闭所以要设置)
39.
40. proxy_cache cache_one;
41.
42. #对不同的状态码缓存不同时间
43.
44. proxy_cache_valid 200 304 12h;
45.
46. #设置以什么样参数获取缓存文件名
47.
48. proxy_cache_key $host$uri$is_args$args;
49. #后7端的Web服务器可以通过X-Forwarded-For获取用户真实IP
50. proxy_set_header Host $host;
51. proxy_set_header X-Real-IP $remote_addr;
52. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
53. #代理设置
54. proxy_pass http://IP;
55. #文件过期时间控制
56.
57. expires 1d;
58. }
59. #配置手动清楚缓存(实现此功能需第三方模块 ngx_cache_purge)
60.
61. #http://www.123.com/2017/0316/17.html访问
62. #http://www.123.com/purge/2017/0316/17.html清楚URL缓存
63.
64. location ~ /purge(/.*) {
65. allow 127.0.0.1;
66. deny all;
67. proxy_cache_purge cache_one $host$1$is_args$args;
68. }
69. #设置扩展名以.jsp、.php、.jspx结尾的动态应用程序不做缓存
70. location ~.*\.(jsp|php|jspx)?$ {
71. proxy_set_header Host $host;
72. proxy_set_header X-Real-IP $remote_addr;
73. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
74. proxy_pass http://http://IP;
75. }
7)负载均衡
1. #负载均衡服务器池
2. upstream my_server_pool {
3. #调度算法
4.
5. #1.轮循(默认)(weight轮循权值)
6.
7. #2.ip_hash:根据每个请求访问IP的hash结果分配。(会话保持)
8.
9. #3.fair:根据后端服务器响应时间最短请求。(upstream_fair模块)
10.
11. #4.url_hash:根据访问的url的hash结果分配。(需hash软件包)
12. #参数:
13.
14. #down:表示不参与负载均衡
15.
16. #backup:备份服务器
17.
18. #max_fails:允许最大请求错误次数
19.
20. #fail_timeout:请求失败后暂停服务时间。
21. server 192.168.1.109:80 weight=1 max_fails=2 fail_timeout=30;
22. server 192.168.1.108:80 weight=2 max_fails=2 fail_timeout=30;
23. }
24. #负载均衡调用
25. server {
26. ...
27. location / {
28. proxy_pass http://my_server_pool;
29. }
30.
31. }
8)URL重写
1. #根据不同的浏览器URL重写
2. if($http_user_agent ~ Firefox){
3. rewrite ^(.*)$ /firefox/$1 break;
4. }
5. if($http_user_agent ~ MSIE){
6. rewrite ^(.*)$ /msie/$1 break;
7. }
8.
9.
10. #实现域名跳转
11. location / {
12. rewrite ^/(.*)$ https://web8.example.com$1 permanent;
13. }
9)IP限制
1. #限制IP访问
2. location / {
3. deny 192.168.0.2;
4. allow 192.168.0.0/24;
5. allow 192.168.1.1;
6. deny all;
7. }
1.
2) nginx防火墙配置
https://github.com/nbs-system/naxsi/wiki
3) nginx_lua
-
-
-
- openResty启动重载停止
-
-
启动
openresty -p /opt/openResty/openRestyDir/nginx -c conf/nginx.conf
错误信息:
openresty: error while loading shared libraries: libluajit-5.1.so.2: cannot open shared object file: No such file or directory
缺少lua环境,安装lua-jit;http://luajit.org/download.html;root用户直接:make ; make install。
ps -ef|grep openResty
重载
openresty –p /opt/openResty/openRestyDir/nginx -s reload
停止
openresty –p /opt/openResty/openRestyDir/nginx -s stop
openresty -p /opt/openResty/openRestyDir/nginx -t