1、安装四个依赖
慎重安装 openssl ,可能会导致连不上ssh。操作前最好使用top命令另外挂一个窗口。
yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel
2、下载并解压安装包
yum -y install wget
wget http://nginx.org/download/nginx-1.13.7.tar.gz
tar -zxvf nginx-1.13.7.tar.gz
3、配置安装路径、编译、安装
源码的安装一般由有这三个步骤:配置(configure)、编译(make)、安装(make install)
–prefix选项是配置安装的路径,如果不配置该选项,安装后可执行文件默认放在/usr /local/bin
cd nginx-1.13.7
#配置安装路径,--with-http_ssl_module表示添加https的ssl模块
./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-stream
#编译
make
#安装
make install
4、修改配置文件
vi /usr/local/nginx/conf/nginx.conf
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
server_tokens off; #隐藏版本,防止信息泄露
autoindex off; #防止目录遍历
sendfile on;
keepalive_timeout 65;
upstream myserver{
server 192.168.1.201:8081;
server 192.168.1.202:8081;
server 192.168.1.203:8081;
}
server {
listen 8080; #监听端口
server_name localhost;
location / {
proxy_pass http://myserver;
}
if ($request_method !~* GET|POST) { #禁用不安全的http方法,按需添加业务中所用方法
return 503;
}
}
}
配置https需要准备两个证书,证书生成方式:https://blog.csdn.net/u014644574/article/details/126190061
/usr/local/nginx/cert/server.crt 格式如下:
-----BEGIN CERTIFICATE-----
MIIDNDCCAhwCCQDQHlYQwzCR1zANBgkqhkiG9w0BAQsFADBcMQswCQYDVQQGEwJD
...
rZ5mI+4PNC4=
-----END CERTIFICATE-----
/usr/local/nginx/cert/server.key 格式如下:
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEAmzo2IVkKlJQr12Z1GFVOaYelN3HVufiMu0RC4wKveigCOXuo
...
WLTC8ntDqyT08b+wY3D0m1frhRJhEpeoF+kotzbPWmgPyhNYvxwPQA==
-----END RSA PRIVATE KEY-----
vi /usr/local/nginx/conf/nginx.conf
以下配置的作用(我们作为服务端),项目原来是http,现在不动原来代码的情况,让请求者(客户端)认为已经改成https了。
相当于nginx搭建了一个https服务器,外部访问的是nginx的https,内部转发到原来的http应用。相当于 https转http。
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 443 ssl;
server_name localhost;
ssl_certificate /usr/local/nginx/cert/server.crt;
ssl_certificate_key /usr/local/nginx/cert/server.key;
location / {
proxy_pass http://192.168.1.201:8080;
}
}
}
以下配置的作用(我们作为客户端),我们要请求的目标应用是一个https,由于某台服务器A的jdk版本问题导致ssl握手失败,需要使用另外一台服务器B安装nginx转发一下请求
自己内部之间,服务器A的请求使用http请求到服务器B,服务器B转发请求目标应用使用https请求。
server {
listen 80;
server_name localhost;
location / {
#proxy_pass https://192.168.111.202:443;
proxy_pass https://www.baidu.com/;
root html;
index index.html index.htm;
}
}
5、启动、重启、关闭 nginx
cd /usr/local/nginx/sbin/
#启动
./nginx
#重启
./nginx -s reload
#关闭
./nginx -s quit
#查看进程
ps -ef|grep nginx