nginx可以使用各平台的默认包来安装,本文是介绍使用源码编译安装,包括具体的编译参数信息。
正式开始前,编译环境gcc g++ 开发库之类的需要提前装好,这里默认你已经装好。
ububtu平台编译环境可以使用以下指令
apt-get install build-essential
apt-get install libtool
下面正式开始
---------------------------------------------------------------------------
一般我们都需要先装pcre, zlib,前者为了重写rewrite,后者为了gzip压缩。
1.选定源码目录
可以是任何目录,本文选定的是/usr/local/src
cd /usr/local/src
2.安装PCRE库
ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/ 下载最新的 PCRE 源码包,使用下面命令下载编译和安装 PCRE 包:
cd /usr/local/src
sudo wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.42.tar.gz
sudo tar -zxvf pcre-8.42.tar.gz
cd pcre-8.42
sudo ./configure
sudo make
sudo make install
3.安装zlib库
http://zlib.net/zlib-1.2.11.tar.gz 下载最新的 zlib 源码包,使用下面命令下载编译和安装 zlib包:
cd /usr/local/src
sudo wget http://zlib.net/zlib-1.2.11.tar.gz
sudo tar -zxvf zlib-1.2.11.tar.gz
cd zlib-1.2.11/
sudo ./configure
sudo make
sudo make install
4.安装ssl(某些vps默认没装ssl)
sudo wget https://www.openssl.org/source/openssl-1.0.1t.tar.gz
sudo tar -xzvf openssl-1.0.1t.tar.gz
cd openssl-1.0.1t/
sudo ./config
sudo make
sudo make install
5.安装nginx
Nginx 一般有两个版本,分别是稳定版和开发版,您可以根据您的目的来选择这两个版本的其中一个下载安装,下面是把 Nginx 安装到 /usr/local/nginx 目录下的详细步骤:
sudo wget http://nginx.org/download/nginx-1.15.6.tar.gz
sudo tar -xzvf nginx-1.15.6.tar.gz
cd nginx-1.15.6
sudo ./configure --sbin-path=/usr/local/nginx/nginx \
--conf-path=/usr/local/nginx/nginx.conf \
--pid-path=/usr/local/nginx/nginx.pid \
--with-pcre=/usr/local/src/pcre-8.42 \
--with-zlib=/usr/local/src/zlib-1.2.11 \
--with-openssl=/usr/local/src/openssl-1.0.1t
sudo make
sudo make install
--with-pcre=/usr/src/pcre-8.34 指的是pcre-8.34 的源码路径。
--with-zlib=/usr/src/zlib-1.2.7 指的是zlib-1.2.7 的源码路径。
安装成功后 /usr/local/nginx 目录下如下:
yan@ubuntu:/usr/local/nginx$ ls
client_body_temp logs scgi_params
fastcgi.conf mime.types scgi_params.default
fastcgi.conf.default mime.types.default scgi_temp
fastcgi_params nginx uwsgi_params
fastcgi_params.default nginx.conf uwsgi_params.default
fastcgi_temp nginx.conf.default uwsgi_temp
html nginx.old win-utf
koi-utf nginx.pid
koi-win proxy_temp
6.启动
确保系统的 80 端口没被其他程序占用,运行/usr/local/nginx/nginx 命令来启动 Nginx
netstat -ano|grep 80
如果查不到结果后执行,有结果则忽略此步骤(ubuntu下必须用sudo启动,不然只能在前台运行)
cd /usr/local/nginx/ #html访问路径
sudo ./nginx #html文件名称
打开浏览器访问此机器的 IP,如果浏览器出现 Welcome to nginx! 则表示 Nginx 已经安装并运行成功。
-----------------------------------------------------
到这里nginx就安装完成了,如果只是处理静态html就不用继续安装了
7. nginx安装完成后,想监听https(端口443),把链接转发到本地服器端口为8080的web服务上,具体配置如下:
server {
listen 443 ssl;
server_name localhost;
ssl_certificate /etc/letsencrypt/live/online.XX.top/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/online.XX.top/privkey.pem;
location / {
proxy_pass http://online.XX.top:8080/;
proxy_connect_timeout 600;
proxy_read_timeout 600;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
root html;
index index.html index.htm;
}
}
参数说明:
proxy_pass nginx代理后的实际访问地址
proxy_connect_timeout 转发模块的超时设置 默认值 60s ,该指令设置与upstream server的连接超时时间,有必要记住,这个超时不能超过75秒。
这个不是等待后端返回页面的时间,那是由proxy_read_timeout声明的。如果你的upstream服务器起来了,但是hanging住了(例如,没有足够的线程处理请求,所以把你的请求放到请求池里稍后处理),那么这个声明是没有用的,因为与upstream服务器的连接已经建立了。
proxy_read_timeout 默认值 60s,该指令设置与代理服务器的读超时时间。它决定了nginx会等待多长时间来获得请求的响应。这个时间不是获得整个response的时间,而是两次reading操作的时间。
proxy_send_timeout 默认值 60s,这个指定设置了发送请求给upstream服务器的超时时间。超时设置不是为了整个发送期间,而是在两次write操作期间。如果超时后,upstream没有收到新的数据,nginx会关闭连接
8. 本配置中的SSL证书生成方式,参考另一篇博文HTTPS自己生成证书
nginx安装链接:https://blog.csdn.net/u014374031/article/details/73441577
nginx参数说明参考链接:https://blog.csdn.net/qq_29663071/article/details/80759098
nginx转发websocket参考链接:https://www.cnblogs.com/java-synchronized/p/7501816.html
ssl证书生成参考链接https://www.cnblogs.com/ly-radiata/articles/6119374.html