添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

5.安装依赖库

5.1 PCRE 库

PCRE(Perl Compatible Regular Expressions)是一个 Perl 库,包括 perl 兼容的正则表达式库。nginx rewrite 依赖于 PCRE 库,所以在安装 Tengine 前一定要先安装 PCRE。

apt-get install libpcre3 libpcre3-dev

5.2 Zlib 库

Zlib 是提供资料压缩用的函数库,当 Tengine 想启用 gzip 压缩的时候就需要使用到 Zlib。

apt-get install zlib1g-dev

5.3 OpenSSL 库

OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及 SSL 协议,并提供丰富的应用程序供测试或其它目的使用。安装 OpenSSL 主要是为了让 Tengine 支持 HTTPS 的访问请求。

apt-get install openssl libssl-dev

6.安装build-essential

解决:./configure: error: C compiler cc is not found

apt-get install build-essential

7.生成makefile

此处增加了proxy_connect模块,用来支持代理服务支持https的请求,从而可以实现内网机器通过代理访问外网。

./configure --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --add-module=./modules/ngx_http_proxy_connect_module

8.编译安装

make && make install

9.开机自启动

vi /lib/systemd/system/nginx.service
Description=nginx - high performance web server
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop
[Install]
WantedBy=multi-user.target

10.使配置生效

systemctl daemon-reload

注意可能会产生下面的错误

错误:System has not been booted with systemd as init system (PID 1). Can‘t operate. 原因:如果是一般的Linux操作系统,可能是因为Linux中没有使用systemd,想用systemd命令来管理Linux上的服务,因此会报错,很可能是使用的是经典的SysV init(sysvinit)系统。 但我这个是window10下WSL的Ubuntu,就会使SysV init而不是systemd。 解决:apt install systemctl

11.设置开机启动

systemctl enable nginx.service

12、运行tengine

/usr/local/nginx/sbin/nginx
systemctl start nginx.service
/usr/local/nginx/sbin/nginx -s reload
systemctl reload nginx.service
/usr/local/nginx/sbin/nginx -s stop
systemctl stop nginx.service

13.是否启动成功,默认80端口,访问地址:http://ip:port/

proxy_connect_allow 443 563; proxy_connect_connect_timeout 10s; proxy_connect_read_timeout 10s; proxy_connect_send_timeout 10s; # forward proxy for non-CONNECT request location / { proxy_pass $scheme://$http_host$request_uri; proxy_set_header Host $host;

15 重启nginx

#校验nginx.conf配置文件
/usr/local/nginx/sbin/nginx -t
#校验通过,重启nginx
/usr/local/nginx/sbin/nginx -s reload

16.测试

通过代理访问git

curl https://www.baidu.com/ -v -x 127.0.0.1:3182
curl -i  --proxy 127.0.0.1:3182 www.baidu.com

18.扩展

18.1 Nginx Http Proxy 代理服务器,本身是不支持代理 Https 网站。

因为 Nginx 不支持 CONNECT,所以无法正向代理 Https 网站。 如果访问 Https 网站,比如:https://www.baidu.com,Nginx access.log 日志如下:

"CONNECT www.baidu.com:443 HTTP/1.1" 400

所以想要代理Https 网站,需要让nginx支持 CONNECT模式,即增加ngx_http_proxy_connect_module模块。

18.2 ngx_http_proxy_connect_module的文档

ngx_http_proxy_connect_module模块主要用于隧道SSL请求的代理服务器。

文档地址:https://github.com/chobits/ngx_http_proxy_connect_module#proxy_connect