1、下载安装包
下载nginx: http://nginx.org/download/nginx-1.10.3.tar.gz
下载openssl : http://www.openssl.org/source/openssl-fips-2.0.9.tar.gz
下载zlib : http://zlib.net/zlib-1.2.11.tar.gz
下载pcre : ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.38.tar.gz
(同步安装包已一并打包)
如果没有安装c++编译环境,还得安装,通过yum install gcc-c++完成安装
2、编译安装
安装前请确认openssl zlib pcre是否安装,若没有,请按照以下顺序进行安装,否则nginx会因为无法找到依赖包而无法安装
openssl :
[root@localhost] tar zxvf openssl-fips-2.0.9.tar.gz
[root@localhost] cd openssl-fips-2.0.9
[root@localhost] ./config && make && make install
pcre:
[root@localhost] tar zxvf pcre-8.38.tar.gz
[root@localhost] cd pcre-8.38
[root@localhost] ./configure && make && make install
zlib:
[root@localhost]tar zxvf zlib-1.2.11.tar.gz
[root@localhost] cd zlib-1.2.11
[root@localhost] ./configure && make && make install
nginx
[root@localhost]tar zxvf nginx-1.8.0.tar.gz
[root@localhost] cd nginx-1.8.0
[root@localhost] ./configure && make && make install
3、启动nginx
[root@localhost] /usr/local/nginx/sbin/nginx (启动)
[root@localhost] /usr/local/nginx/sbin/nginx –s reload (重启)
[root@localhost] /usr/local/nginx/sbin/nginx –s stop (关闭)
4、错误解决
1.[root@localhost lib]# error while loading shared libraries: libpcre.so.1: cannot open shared object file: No such file or directory
原因 在RedHat 64位机器上nginx读取的pcre文件为/lib64/libpcre.so.1文件,默认安装pcre时libpcre.so文件安装在/usr/local/lib/目录下,所以输入/opt/nginx/sbin/nginx -V 找不到文件路径!!
1.首先确定安装了pcre.
2.切换路径: cd /usr/local/lib 执行 ln -s /usr/local/lib/libpcre.so.1
3.root权限下添加软链接 /usr/local/lib/libpcre.so.1 到 /lib64/ : ln -s /usr/local/lib/libpcre.so.1
2.
检查端口号冲突
- 检查nginx是否已经启动,其本身占用该端口号
- 检查是否有别的程序占用该端口号
- 修改nginx的端口号 /usr/local/nginx/conf/nginx.conf
注:[root@localhost ~]# netstat –apn (检查端口号使用情况)
5、确认是否启动成功
打开浏览器 – 输入 192.168.1.168(ip地址):81(端口号) 显示一下内容说明启动成功
成功后页面:
5、nginx相关配置
对 /usr/local/nginx/conf/nginx.conf 文件进行编辑
1.配置端口号与访问首页
2.配置需要代理的ip地址
3.配置允许访问的路径
4. nginx.conf已与安装包一并打包.可参考
6、长连接的反向代理
长连接反向代理一般用在一些特殊情况,比如数据库在某些云服务器上,数据库只能通过SSH通道来进行连接,也就是说只有某台云服务器可以连这个数据库,别的人想直接访问数据库是不行的,这个时候如果想在外网直接能访问到云服务器内部数据库,就需要在能访问的那台云服务器做反向代理,把自身的某个端口号,映射到数据库的连接地址上面,这里要注意一下nginx的版本,低版本的是不能创建长连接代理的,nginx版本至少1.9的版本,版本太低没有stream这个功能
stream模块默认没有编译到nginx, 编译nginx时候 ./configure –with-stream 即可
主要用的是stream的配置:
比如我在nginx的配置文件引入了另外一个配置文件
看一下这个配置文件:
打了马赛克部分的是IP地址和端口号,表示你下方监听的端口号要映射到哪个IP及端口 ,示例:192.168.1.123:3306
提供一份文本格式的
stream {
upstream cloudsocket {
hash $remote_addr consistent;
# $binary_remote_addr;
server 192.168.1.167:3306 weight=5 max_fails=30 fail_timeout=360s;
}
upstream redissocket {
hash $remote_addr consistent;
# $binary_remote_addr;
server 192.168.1.167:6379 weight=5 max_fails=30 fail_timeout=360s;
}
server {
listen 84;#数据库服务器监听端口
proxy_connect_timeout 36000s;
proxy_timeout 36000s;#设置客户端和代理服务之间的超时时间,如果5分钟内没操作将自动断开。
proxy_pass cloudsocket;
}
server {
listen 81;#数据库服务器监听端口
proxy_connect_timeout 36000s;
proxy_timeout 36000s;#设置客户端和代理服务之间的超时时间,如果5分钟内没操作将自动断开。
proxy_pass redissocket;
}
}
意思就是监听本服务器84端口, 如果有连接,则反向代理到192.168.1.167:3306;
监听本服务器的81端口,如果有连接,则反向代理到192.168.1.167:6379;
OK 重启nginx ......................
这样子就搞定啦~~~~~~
皮皮皮,就是皮~~~~~~~~~~~~~~~~~~~