阿里云实例配置nginx 代理Springboot包

首先要知道什么是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
我介绍了在阿里云控制台配置如何开放端口;

测试运行;

经过测试,运行没有问题;

提醒一下:若是有做拦截或者过滤请设置好重定向;

交流使人成长,欢迎交流;

你可能感兴趣的:(java,Nginx,Springboot,java,阿里云,服务器)