文章目录
- 1.官网下载Nginx
- 2.安装依赖包
- 3.安装Nginx
- 4.启动Nginx
- 5.防火墙放开端口
- 6.Nginx的SSL模块安装
- 7.SSL证书准备
- 8.Nginx配置SSL
1.官网下载Nginx
去官网下载需要的nginx压缩包,地址:http://nginx.org/en/download.html,此处下载最新稳定版nginx-1.22.1。
2.安装依赖包
使用linux连接工具例Xshell连接登录到服务器,在centos7命令模式下输入需要安装的依赖包命令。
yum install gcc-c++yum install -y pcre pcre-develyum install -y zlib zlib-develyum install -y openssl openssl-devel
需要从服务器上传递、下载文件,还可以安装上文件传输依赖:
yum install lrzsz -y
安装好后,可以使用rz命令调起本地上传文件到目标服务器的弹出框,把下载的nginx压缩包传到linux服务器上:
使用sz+文件名,从linux服务器下载文件到本地:
3.安装Nginx
(1)解压nginx压缩包,输入解压命令:
tar -zxvf nginx-1.22.1.tar.gz
(2)把解压后的nginx文件移动到安装目录下,先进入到安装目录下:
cd /usr/local
执行移动文件命令,把解压后nginx目录下的所有文件移动到当前目录下:
mv /home/zhanglizeng/nginx-1.22.1/ .
(3)进入到nginx目录下,编译和安装,先进入目录:
cd /usr/local/nginx-1.22.1
执行配置命令:
./configure
执行编译命令:
make
执行安装命令:
make install
执行完上述命令后,会在nginx-1.22.1安装包的同目录下生成一个nginx目录:
4.启动Nginx
进入到nginx启动目录下:
cd /usr/local/nginx/sbin
第一次启动nginx执行命令:
./nginx
其他nginx命令(都在nginx/sbin目录下执行):
# 强制停止nginx命令
./nginx -s stop
# 优雅停止命令,等最后一次交互执行完毕再停止
./nginx -s quit
# 重启命令
./nginx -s reload
# 检查配置文件是否有问题
./nginx -t
# 查看nginx版本信息
./nginx -v
# 查看nginx详细版本信息
./nginx -V
5.防火墙放开端口
查看防火墙是否开启:
systemctl status firewalld
当状态为active(running)时,表示开启;为inactive(dead)时,表示关闭:
当防火墙为关闭时,执行开启防火墙命令:
systemctl start firewalld
把要对外开放的端口号添加到防火墙,例如放开nginx默认的80端口:
firewall-cmd --permanent --zone=public --add-port=80/tcp
需要重启防火墙,加入的端口才能生效,执行重启命令:
systemctl reload firewalld
输入命令查看当前防火墙放开的端口号集合:
firewall-cmd --list-ports
此时通过ip+80默认端口即可访问到nginx,出现此默认页面,表示nginx安装成功:
6.Nginx的SSL模块安装
输入命令查看nginx是否已经安装了ssl模块,需要到nginx安装目录的sbin文件夹下执行:
./nginx -v
当configure arguments:包含–with-http_ssl_module时,说明已经安装,直接跳过此步骤,若是不包含则进行安装。
进入到源nginx安装包的目录下,注意是安装包,不是安装后的文件,即nginx-1.22.1目录下:
cd /usr/local/nginx-1.22.1
执行configure配置命令:
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
然后执行编译命令:
make
执行完编译命令就行,此处不需要执行make install安装命令,否则nginx会重新安装。
执行完成后,会在nginx-1.22.1目录下生成一个目录objs:
此objs目录内包含一个可执行文件nginx:
把生成的objs目录内的nginx执行文件替代安装好的nginx执行文件,先停止当前运行的nginx服务,进入目录:
cd /usr/local/nginx/sbin
执行停止nginx命令:
./nginx -s stop
执行nginx执行文件的替代:
cp /usr/local/nginx-1.22.1/objs/nginx /usr/local/nginx/sbin
此时再查看ssl的包含情况,显示已包含:
7.SSL证书准备
SSL证书包含:证书文件.crt、私钥文件.key。证书是跟域名绑定的,在申请证书时需要提供绑定的域名。网上也有免费的证书申请,此处不在过多赘述。
8.Nginx配置SSL
把证书、私钥文件上传到linux服务器上,在nginx的conf目录下创建一个ssl目录,存放这两个文件:
配置nginx.conf文件,完整目录为/usr/local/nginx/conf/nginx.conf:
user nobody;
worker_processes 4;error_log logs/error.log warn;
pid logs/nginx.pid;
worker_rlimit_nofile 102400;events {use epoll;worker_connections 102400;
}http {include mime.types;default_type application/octet-stream;autoindex off;sendfile on;tcp_nopush on;fastcgi_buffers 32 8k;keepalive_timeout 120;tcp_nodelay on;# 上传大文件时,使用nginx代理服务,需要配置文件缓存区,去对应目录下创建上client_body_temp_path配置的目录client_body_buffer_size 10m;client_max_body_size 100m;client_body_temp_path temp/;proxy_connect_timeout 5;proxy_read_timeout 120;proxy_send_timeout 5;proxy_buffer_size 1024k;proxy_buffers 128 64k;proxy_busy_buffers_size 1024k;proxy_temp_file_write_size 1024k;proxy_ignore_client_abort on;proxy_redirect off;proxy_set_header Host $host:$server_port;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header REMOTE-HOST $remote_addr;log_format main '$remote_addr - $upstream_addr [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for" $request_time $upstream_response_time "$upstream_cache_status"';proxy_hide_header "X-Frame-Options";# nginx反向代理的配置文件,使用引入文件的方式加入,这样便于扩展include vhosts/xxx-master.conf;include vhosts/xxx-gateway.conf;#gzip on;
}
在conf目录下创建一个vhosts目录,存放需要引入的配置文件,目录/usr/local/nginx/conf/vhosts:
xxx-master.conf配置ssl证书相关信息:
server {#ssl默认访问443端口,开启ssllisten 443 ssl;charset UTF-8;#服务域名server_name api.xxx.cn;#ssl证书文件地址ssl_certificate /usr/local/nginx/conf/ssl/xxx_bundle.crt;#ssl私钥文件地址ssl_certificate_key /usr/local/nginx/conf/ssl/xxx.cn.key;ssl_session_cache shared:SSL:1m;#缓存有效期ssl_session_timeout 5m;#加密算法ssl_ciphers HIGH:!aNULL:!MD5;#使用服务器端的首选算法ssl_prefer_server_ciphers on;location / {#反向代理到的服务proxy_pass http://xxx-gateway;proxy_redirect default;proxy_set_header Host $host:$server_port;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-Host $host:$server_port;proxy_set_header X-Forwarded-Server $host;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;}
}server {listen 80;server_name api.xxx.cn;# 把http请求重定向到httpsrewrite ^(.*)$ https://${server_name}$1 permanent;
}
xxx-gateway.conf配置网关信息:
upstream xxx-gateway {server 10.xx.9.xx:1234;server 10.xx.10.xx:2345;server 10.xx.6.xx:5678;
}