首先要知道什么是Nginx,百度百科必不可少;https://baike.baidu.com/item/nginx/3817705?fr=aladdin
百度百科的第一句话是:Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。
我的思考就是避免开放多个端口,好比如家里盖房子,有窗户有门就好,没必要全是窗户或者好多个窗户,这样会不太安全;毕竟窗户或者门多了,一个不好就会有人不打招呼的就进来对主人来说是很大的一个损失。所以,就通过这个反向代理;把Springboot打的jar包隔离,通过NG才能访问。算是添加了一层防护;我理解可能有错,看看就好,各位大佬要有自己的观点。欢迎互相交流;
闲话少说,现在开始我的思路,首先分5步
1,安装Nginx,
2,配置Nginx.conf文件
3,创建一个.sh文件,运行jar包;
4,阿里云控制台配置http 80端口;
5,测试运行;
安装Nginx
推荐一个博客:https://www.centos.bz/2018/01/centos-7%EF%BC%8C%E4%BD%BF%E7%94%A8yum%E5%AE%89%E8%A3%85nginx/
安装简单,方便;启动,管理,查看进程 齐了;所以我就不多说了;
配置Nginx.conf文件
最关键的一步,配置Nginx,看了一下午的博客,太多就不一一推荐了,我先把我的配置文件贴一下
# For more information on configuration, see:
# * Official English Documentation: http://nginx.org/en/docs/
# * Official Russian Documentation: http://nginx.org/ru/docs/
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
# Load dynamic modules. See /usr/share/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;
events {
worker_connections 1024;
}
http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
include /etc/nginx/mime.types;
default_type application/octet-stream;
# Load modular configuration files from the /etc/nginx/conf.d directory.
# See http://nginx.org/en/docs/ngx_core_module.html#include
# for more information.
include /etc/nginx/conf.d/*.conf;
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name localhost;
proxy_set_header Host $host;
proxy_set_header Referer $http_referer;
proxy_set_header Cookie $http_cookie;
proxy_set_header X_Real_IP $remote_addr;
proxy_set_header X_Forwarded_For $proxy_add_x_forwarded_for;
proxy_send_timeout 180s;
proxy_read_timeout 180s;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location / {
root /usr/share/nginx/html;
}
location /ht {
proxy_cookie_path /ht/ /;
proxy_pass http://localhost:8092/ht/;
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
# Settings for a TLS enabled server.
#
# server {
# listen 443 ssl http2 default_server;
# listen [::]:443 ssl http2 default_server;
# server_name _;
# root /usr/share/nginx/html;
#
# ssl_certificate "/etc/pki/nginx/server.crt";
# ssl_certificate_key "/etc/pki/nginx/private/server.key";
# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 10m;
# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;
#
# # Load configuration files for the default server block.
# include /etc/nginx/default.d/*.conf;
#
# location / {
# }
#
# error_page 404 /404.html;
# location = /40x.html {
# }
#
# error_page 500 502 503 504 /50x.html;
# location = /50x.html {
# }
# }
}
这是我配置的文件,
一个server,只监听一个端口80;代理了端口8092;
可以看到有两个location ,原生的配制文件是一个的。
第一个:location / 我设置为前端访问地址,前端路径在root中设置了;
第二个 :location /ht 我设置了后台访问地址,由于Springboot打的包通过java环境运行,有内置的Tomcat服务器,无法给予一个文件地址,所以指向了本地jar端口:
用户 ——> nginx ——> 后台
我的理解就这个意思;
创建一个.sh文件,运行jar包;
我们都知道,当我们打开远程连接的窗口时,运行 命令
java -jar jar包
不关闭窗口是可以在浏览器访问的,若是关闭了窗口,浏览器便无法访问了;那是因为这只是一条命令,关闭了窗口,服务器就认为断了连接,自然也会将该命令取消,所以便有大佬做了一个shell脚本,将这条命令变为脚本运行,变为一个进程,如此除非手动杀死进程,不然是无法关闭。
具体做是创建一个.sh文件,也可以在本地创建,然后在上传到服务器;写上:
nohup java -jar /opt/jar/adb.jar &
&不能去掉,&代表的是守护进程;
创建完成后,使用启动命令:
sh startJar.sh
运行这条命令后,会生成一个.out的日志文件,jar运行输出的日志都会在这个文件中展示;
如果想关闭进程,使用命令
ps -ef | grep java
查看进程的pid,然后在使用命令
kill -9 pid
便可以关闭这个进程了;
阿里云控制台配置http 80端口;
我们在实例中配置好之后,需要在阿里云控制台的实例安全组规则中开发端口80;具体可看上一篇博客;https://blog.csdn.net/smallboh/article/details/102502407
我介绍了在阿里云控制台配置如何开放端口;
测试运行;
经过测试,运行没有问题;
提醒一下:若是有做拦截或者过滤请设置好重定向;
交流使人成长,欢迎交流;