Nginx配置多服务共享80端口,实现转发代理
描述
访问 http://127.0.0.1/index.html 页面时,就会被代理转发到其它(9999)端口页面。虽然访问的是80端口,但其实被代理到其他(9999)端口,访问index页面。
向tomcat服务发送http请求时,在url路径后面携带/api时,就会被映射到127.0.0.1:8888的发送ajax请求服务后端,获取到后台数据。
比如,发送http://127.0.0.1/api/user请求时,最后会被代理到http://127.0.0.1:8888/user其端口会被隐藏。
配置
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
# springboot服务端口
upstream mylocal {
server 127.0.0.1:8888;
}
# 监听80端口
server {
listen 80;
server_name 127.0.0.1;
charset utf-8;
# 服务器fttp请求
location /api {
proxy_pass http://mylocal;
}
# web页面,实现转发代理到9999端口
location / {
proxy_pass http://127.0.0.1:9999/;
}
}
# 监听9999端口
server {
listen 9999;
server_name 127.0.0.1;
location / {
root html;
index index.html index.htm;
}
}
}
Nginx提高加载静态文件速度
开启gzip压缩
http {
# 开启gzip
gzip on;
# 启用gzip压缩的最小文件,小于设置值的文件将不会压缩
gzip_min_length 1k;
# gzip 压缩级别,1-10,数字越大压缩的越好,也越占用CPU时间。一般设置1和2
gzip_comp_level 2;
# 进行压缩的文件类型。javascript有多种形式。其中的值可以在 mime.types 文件中找到。
gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
# 是否在http header中添加Vary: Accept-Encoding,建议开启
gzip_vary on;
# 禁用IE 6 gzip
gzip_disable "MSIE [1-6]\.";
# 设置缓存路径并且使用一块最大100M的共享内存,用于硬盘上的文件索引,包括文件名和请求次数,每个文件在1天内若不活跃(无请求)则从硬盘上淘汰,硬盘缓存最大10G,满了则根据LRU算法自动清除缓存。
proxy_cache_path /var/cache/nginx/cache levels=1:2 keys_zone=imgcache:100m inactive=1d max_size=10g;
}
开启缓存
http {
server{
location ~* ^.+\.(css|js|ico|gif|jpg|jpeg|png)$ {
log_not_found off;
# 关闭日志
access_log off;
# 缓存时间7天
expires 7d;
# 源服务器
proxy_pass http://localhost:8888;
# 指定上面设置的缓存区域
proxy_cache imgcache;
# 缓存过期管理
proxy_cache_valid 200 302 1d;
proxy_cache_valid 404 10m;
proxy_cache_valid any 1h;
proxy_cache_use_stale error timeout invalid_header updating http_500 http_502 http_503 http_504;
}
}
}
Nginx配置SSL证书实现https访问
描述
数字证书是一种认证机制。简单点说,它代表了一种由权威机构颁发授权的安全标志。 比传统网站采用HTTP协议进行明文数据传输,更为安全。 一份 SSL 证书包括一个公共密钥和一个私用密钥。公共密钥用于加密信息,私用密钥用于解译加密的信息。 SSL的工作原理中包含如下三个协议。 握手协议(Handshake protocol) 记录协议(Record protocol) 警报协议(Alert protocol)。
配置SSL证书
在阿里下载好nginx相关的证书(证书一般是pem文件和key文件,名字随意取)。 件证书上传到服务器中,存放到nginx文件下,后面需使用到。
注意:在下载证书时,应该对域名进行备案,下载免费证书
Nginx的SSL模块下载
在配置SSL证书之前,要确保Nginx已经安装了SSL模块。检查是否存在SSL模块,进入到Nginx目标下,输入:sbin/nginx -V
如果出现 (configure arguments: --with-http_ssl_module), 则已安装。
nginx.conf的配置
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name citycode.top www.citycode.top;
# 将请求转成https
rewrite ^(.*)$ https://$host$1 permanent;
}
server {
#监听443端口
listen 443;
#你的域名
server_name citycode.top www.citycode.top;
ssl on;
# ssl证书的pem文件路径
ssl_certificate /card/20210803.pem;
# ssl证书的key文件路径
ssl_certificate_key /card/20210803.key;
location / {
root html;
index index.html index.hml;
}
}
}
注意事项
- 443端口的防火墙需要关闭
- 443端口安全组开放
- ssl证书未过期
- 网站和域名进行备案
- 使用域名访问
- 443端口未被占用