安装编译nginx的依赖包
# yum install gcc gcc-c++ make automake autoconf libtool pcre* zlib openssl openssl-devel
解压nginx-1.6.2.tar.gz
# tar zxf nginx-1.6.2.tar.gz
编译安装nginx
# cd nginx-1.6.2
# ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
# make
# make install (如果不想执行覆盖安装,可以在make命令执行后,备份原有安装好的nginx: # cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak, 然后再将nginx-1.6.2目录下刚编译好的nginx覆盖掉原有的nginx: #cp ./objs/nginx /usr/local/nginx/sbin/)
方式一:
不指定启动配置文件,默认启动nginx.conf配置文件: # /usr/local/nginx/sbin/nginx
方式二:
指定启动配置文件,例如启动nginx_kibana.conf配置文件:
# /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx_kibana.conf
启动后,可查看nginx拥有的模块:
# /usr/local/nginx/sbin/nginx -V
http反向代理
只需要修改修改配置文件即可。可以直接修改/usr/local/nginx/conf/nginx.conf文件,也可以在/usr/local/nginx/conf/目录下编辑新的.conf文件。无论是哪种方式,都只需要在配置文件里面添加如下命令即可:
例如配置kibana的http反向代理:
server {
listen 5602;
server_name 192.168.9.122;
location / {
proxy_pass http://192.168.9.122:5601;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
https反向代理
https证书
nginx的https反向代理,需要证书
如果没有证书,可以运行以下命令生成一个证书,和一个解密的key文件。(该命令生成的证书不会被浏览器认证,如果需要一个被浏览器认证的证书,需要通过证书机构申请)
# openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /opt/ssl/private/nginx-selfsigned.key -out /opt/ssl/certs/nginx-selfsigned.crt
备注:/opt/ssl/private/nginx-selfsigned.key /opt/ssl/private为解密key文件的存放路径,nginx-selfsigned.key为key文件的名称。opt/ssl/certs/nginx-selfsigned.crt opt/ssl/certs为证书crt文件的存放路径,nginx-selfsigned.crt为证书文件的名称。这些参数都可以根据自己的情况进行修改
如果已经有证书,可以运行以下命令来生成一个解密的key文件
# openssl rsa -in server.key -out server.key.unsecure
备注:server.key为证书秘钥文件,根据自己的秘钥文件名称进行修改
可以直接修改/usr/local/nginx/conf/nginx.conf文件,也可以在/usr/local/nginx/conf/目录下编辑新的.conf文件。无论是哪种方式,都只需要在配置文件里面添加如下命令即可:
例如配置kibana的https反向代理
server {
listen 5602 ssl;
server_name 192.168.9.122;
ssl on;
ssl_certificate /opt/ssl/certs/nginx-selfsigned.crt;
ssl_certificate_key /opt/ssl/private/nginx-selfsigned.key;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
location / {
proxy_pass http://192.168.9.122:5601;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
注释:
ssl on; 控制ssl协议是否启动,on为启动,off为不启用
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
上面绿色字体的几个参数为nginx SSL的性能调优参数
先安装Apache Httpd密码生成工具
# yum install httpd-tools -y
生成认证密码
# htpasswd -c /usr/local/nginx/conf/htpasswd admin
备注:/usr/local/nginx/conf 为认证密码文件的存放路径,htpasswd为认证密码文件,admin为认证的用户名。 这些参数都可以根据自己的情况进行修改
运行命令后,根据提示输入要设置的密码即可
想要认证密码生效,如要上面的配置文件中添加如下参数:
auth_basic "Restricted Access";
auth_basic_user_file /usr/local/nginx/htpasswd;
备注:/usr/local/nginx/htpasswd 为上面生成密码文件的路径
例如:
server {
listen 5602 ssl;
server_name 192.168.9.122;
ssl on;
ssl_certificate /opt/ssl/certs/nginx-selfsigned.crt;
ssl_certificate_key /opt/ssl/private/nginx-selfsigned.key;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
auth_basic "Restricted Access";
auth_basic_user_file /usr/local/nginx/htpasswd;
location / {
proxy_pass http://192.168.9.122:5601;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
配置文件后,只需要重启对应的nginx服务即可。 为了安全起见,防火墙可以关闭原程序端口,只需要开放反向代理端口。例如kibana的5601端口是http服务的,不是很安全,启动nginx反向代理后,可关闭5601端口。