nginx是一款轻量级web服务器,主要有负载均衡和反向代理的特性。
安装准备
nginx一些模块需要依赖lib库,所以先安装lib库,执行以下命令:
代码语言:javascript复制[root@localhost local]# yum -y install gcc-c pcre pcre-devel zlib zlib-devel openssl openssl-devel
下载
- 在官网下载安装包
安装
- 解压文件:
tar -zxvf nginx-1.20.2.tar.gz
- 解压之后进入到nginx目录:
cd nginx-1.20.2
- 默认配置模块:
./configure
需要添加https
配置模块:
./configure --prefix=/usr/local/nginx --with-http_ssl_module
- 编译
make
- 安装
make install [路径,默认安装在usr/local路径下]
启动、关闭
代码语言:javascript复制# 启动
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
# 重启
/usr/local/nginx/sbin/nginx -s reload
# 关闭
/usr/local/nginx/sbin/nginx -s stop
每次启动或者重启服务都需要输入一大串路径,为了简化操作,配置一下
systemctl
服务。
配置systemctl
服务
- 在
/usr/lib/systemd/system
创建nginx.service
文件:
vim /usr/lib/systemd/system/nginx.service
- 添加配置内容:
[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true
[Install]
- 配置systemctl之后的启动方式
# 查询状态
systemctl status nginx
# 启动
systemctl start nginx
# 重启
systemctl restart nginx
# 关闭
systemctl stop nginx
# 设置开机启动
systemctl enable nginx
- 启动
nginx
,访问http://127.0.0.1
,出现如下页面说明nginx
启动成功:
配置
修改conf/nginx.conf
配置文件。
找到server
模块下的80
端口。
- 修改
server_name
后面的域名,我这里改成www.jeremy7.cn
。 - 在
location /
下添加proxy_pass
反向代理:
proxy_pass http://wwwtomcat;
- 对应添加一个
upstream
模块,添加转发的路径:
upstream wwwtomcat {
server 127.0.0.1:8080;
}
代码语言:javascript复制server {
listen 80;
server_name www.jeremy7.cn;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
proxy_pass http://wwwtomcat;
root html;
index index.html index.htm;
}
}
配置https
开启 443端口
代码语言:javascript复制server {
listen 443 ssl;
#配置HTTPS的默认访问端口为443。
#如果未在此处配置HTTPS的默认访问端口,可能会造成Nginx无法启动。
#如果您使用Nginx 1.15.0及以上版本,请使用listen 443 ssl代替listen 443和ssl on。
server_name yourdomain.com; #需要将yourdomain.com替换成证书绑定的域名。
root html;
index index.html index.htm;
ssl_certificate cert/cert-file-name.pem; #需要将cert-file-name.pem替换成已上传的证书文件的名称。
ssl_certificate_key cert/cert-file-name.key; #需要将cert-file-name.key替换成已上传的证书密钥文件的名称。
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
#表示使用的加密套件的类型。
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #表示使用的TLS协议的类型。
ssl_prefer_server_ciphers on;
location / {
root html; #站点目录。
index index.html index.htm;
}
}
server_name
改成自己的申请的域名ssl_certificate
替换成.pem
后缀的证书文件ssl_certificate_key
替换成.key
后缀的证书文件location /
里面添加反向代理,也是上面的反向代理:
proxy_pass http://wwwtomcat;
测试配置是否正确:
代码语言:javascript复制/usr/local/nginx/sbin/nginx -t
http强转https
server
模块添加配置
rewrite ^(.*)$ https://$host$1 permanent;#将http转成https