如何给在用的nginx添加新模块

如何给在用的nginx添加新模块,第1张

在原生的nginx,他不可以动态加载模块,所以当你安装第三方模块的时候需要覆盖nginx文件.nginx第三方模块安装方法如下:

/configure --prefix=/你的安装目录 --add-module=/第三方模块目录

以安装pagespeed模块实例

在未安装nginx的情况下安装nginx第三方模块

# ./configure --prefix=/usr/local/nginx-1.4.1 \

--with-http_stub_status_module \

--with-http_ssl_module --with-http_realip_module \

--with-http_image_filter_module \

--add-module=../ngx_pagespeed-master --add-module=/第三方模块目录

# make

# make isntall

# /usr/local/nginx-1.4.1/sbin/nginx

在已安装nginx情况下安装nginx模块

# ./configure --prefix=/usr/local/nginx-1.4.1 \

--with-http_stub_status_module \

--with-http_ssl_module --with-http_realip_module \

--with-http_image_filter_module \

--add-module=../ngx_pagespeed-master

# make

# /usr/local/nginx-1.4.1/sbin/nginx -s stop

# cp objs/nginx /usr/local/nginx/sbin/nginx

# /usr/local/nginx-1.4.1/sbin/nginx

相比之下仅仅多了一步覆盖nginx文件.

总结,安装nginx安装第三方模块实际上是使用–add-module重新安装一次nginx,不要make install而是直接把编译目录下objs/nginx文件直接覆盖老的nginx文件.如果你需要安装多个nginx第三方模块,你只需要多指定几个相应的–add-module即可.

第三方模块安装方法如下:

1

./configure --prefix=/你的安装目录 --add-module=/第三方模块目录

以安装pagespeed模块实例

在未安装nginx的情况下安装nginx第三方模块

# ./configure --prefix=/usr/local/nginx-1.4.1 \

--with-http_stub_status_module \

--with-http_ssl_module --with-http_realip_module \

--with-http_image_filter_module \

--add-module=../ngx_pagespeed-master --add-module=/第三方模块目录

# make

# make isntall

# /usr/local/nginx-1.4.1/sbin/nginx

在已安装nginx情况下安装nginx模块

# ./configure --prefix=/usr/local/nginx-1.4.1 \

--with-http_stub_status_module \

--with-http_ssl_module --with-http_realip_module \

--with-http_image_filter_module \

--add-module=../ngx_pagespeed-master

# make

# /usr/local/nginx-1.4.1/sbin/nginx -s stop

# cp objs/nginx /usr/local/nginx/sbin/nginx

# /usr/local/nginx-1.4.1/sbin/nginx

相比之下仅仅多了一步覆盖nginx文件.

总结,安装nginx安装第三方模块实际上是使用–add-module重新安装一次nginx,不要make install而是直接把编译目录下objs/nginx文件直接覆盖老的nginx文件.如果你需要安装多个nginx第三方模块,你只需要多指定几个相应的–add-module即可.

基于《lnmp一键安装包》,将 –with-http_sub_module、ngx_cache_purge-2.1编译到nginx中,如下:

cd ~/lnmp/src

wget http://labs.frickle.com/files/ngx_cache_purge-2.1.tar.gz

tar xzf ngx_cache_purge-2.1.tar.gz

cd nginx-1.6.1

make clean

./configure --prefix=/usr/local/nginx --user=www --group=www --add-module=../ngx_cache_purge-2.1 \

--with-http_sub_module --with-http_stub_status_module --with-http_ssl_module --with-http_flv_module \

--with-http_gzip_static_module --with-ld-opt=-ljemalloc

make

mv /usr/local/nginx/sbin/nginx{,$(date +%m%d)}

cp objs/nginx /usr/local/nginx/sbin

service nginx resatrt

mkdir -p /var/nginx/cache/one

chown -R www.www /var/nginx

自己签发免费ssl证书,为nginx生成自签名ssl证书(访问时需添加信任。也可以使用第三方签名后的证书,如免费的startssl)

cd /usr/local/nginx/conf

openssl genrsa -out server.key 1024

openssl req -new -key server.key -out server.csr

openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

nginx.conf 配置文件如下(注意: 74.xx.xx.xx替换成域名或者IP):

proxy_cache_path /var/nginx/cache/one levels=1:2 keys_zone=one:10m max_size=10g

proxy_cache_key "$host$request_uri"

upstream google {

server 74.125.239.112:80 max_fails=3

server 74.125.239.113:80 max_fails=3

server 74.125.239.114:80 max_fails=3

server 74.125.239.115:80 max_fails=3

server 74.125.239.116:80 max_fails=3

}

server {

listen 80

server_name 74.xx.xx.xx

rewrite ^(.*) https://74.xx.xx.xx$1 permanent

}

server {

listen 443

server_name 74.xx.xx.xx

ssl on

ssl_certificate /usr/local/nginx/conf/server.crt

ssl_certificate_key /usr/local/nginx/conf/server.key

location / {

proxy_cache one

proxy_cache_valid 200 302 1h

proxy_cache_valid 404 1m

proxy_redirect https://www.google.com/ /

proxy_cookie_domain google.com 74.xx.xx.xx

proxy_pass http://google

proxy_set_header Host "www.google.com"

proxy_set_header Accept-Encoding ""

proxy_set_header User-Agent $http_user_agent

proxy_set_header Accept-Language "zh-CN"

proxy_set_header Cookie "PREF=ID=047808f19f6de346:U=0f62f33dd8549d11:FF=2:LD=zh-CN:NW=1:TM=1325338577:LM=1332142444:GM=1:SG=2:S=rE0SyJh2w1IQ-Maw"

sub_filter www.google.com 74.xx.xx.xx

sub_filter_once off

}

}

注解:

1、监听了80和443端口,可以在Linux自己生成证书。

2、定义了个upstream google,放了5个谷歌的ip(通过nslookup www.google.com命令获取(yum -y install bind-utils)),如果不这样做,就等着被谷歌的验证码搞崩溃吧。

3、也设置了反向代理缓存,某些资源不用重复去请求谷歌获取,加快搜索速度

4、proxy_redirect https://www.google.com/ /这行的作用是把谷歌服务器返回的302响应头里的域名替换成我们的,不然浏览器还是会直接请求www.google.com,那样反向代理就失效了。

5、proxy_cookie_domain google.com 74.xx.xx.xx把cookie的作用域替换成我们的域名

6、proxy_pass http://google反向代理到upstream google

7、proxy_set_header Accept-Encoding “”防止谷歌返回压缩的内容,因为压缩的内容我们无法作域名替换

8、proxy_set_header Accept-Language “zh-CN”设置语言为中文

9、proxy_set_header Cookie “PREF=ID=047808f19f6de346:U=0f62f33dd8549d11:FF=2:LD=zh-CN:NW=1:TM=1325338577:LM=1332142444:GM=1:SG=2:S=rE0SyJh2w1IQ-Maw”这行很关键,传固定的cookie给谷歌,是为了禁止即时搜索,因为开启即时搜索无法替换内容。还有设置为新窗口打开网站,这个符合我们打开链接的习惯

10、sub_filter www.google.com 74.xx.xx.xx当然是把谷歌的域名替换成我们的了,注意需要安装nginx的sub_filter模块(编译加上–with-http_sub_module参数)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11242510.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-14
下一篇 2023-05-14

发表评论

登录后才能评论

评论列表(0条)

保存