Nginx+tomcat Java服务部署配置
centos
目录
Nginx("engine x")是一款是由俄罗斯的程序设计师Igor Sysoev所开发高性能的 Web和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器。
应用部署方案采用nginx+tomcat:
以springboot 工程为例,通过ng反向代理tomcat服务,后端服务通过JAR(内置tomcat)方式运行;前端项目build后的静态资源,部署到nginx中运行。
1.安装NG和常用命令
Yum安装NG命令:
# yum install -y nginx
启动ng服务命令:
# systemctl start nginx.service
检查ng配置是否正确命令:
# nginx -t
ng重载配置命令:
# nginx -s reload
启动jar工程并实时打印日志命令:springboot应用jar打包
# nohup java -jar tomcat.jar & tail -f nohup.out
启动jar工程并实时打印日志(指定日志文件名)命令:
# nohup java -jar tomcat.jar >tomcat.log & tail -f tomcat.log
查看运行中的java进程命令:
# ps -ef|grep java
终止jar工程命令:
# kill “进程号”
2.修改默认nginx.conf配置
修改nginx.conf,删除里面默认的server:
直接写在nginx.conf里比较不清晰,建议单独新建配置文件导入
# vim /etc/nginx/nginx.conf
3.导入个人配置文件*.conf
1.创建编辑自己的配置文件myserver.conf,文件名可任意。
2.上传配置文件myserver.conf到系统目录 /etc/nginx/conf.d里,nginx会自动加载该配置。
3.上传自定义错误页面(error_page文件夹)到 /home/server/html/error_page。
4.静态工程上传到/home/server/html,重载配置。
5.启动nginx和tomcat服务,完成!
myserver.conf 文件:这份配置几乎可以在生产环境使用
#上传文件大小限制*
client_max_body_size 200m;
#开启错误页面拦截*
proxy_intercept_errors on;
fastcgi_intercept_errors on;
#隐藏ng版本号
server_tokens off;
upstream offic { # 代理动态服务(后端):
server localhost:8088;
}
server { # 静态服务:
listen 9005;
server_name localhost;
root /home/server/html/offic; # html工程路径
location / {
index index.html index.htm;
}
}
server { # 静态服务:
listen 9006;
server_name localhost;
root /home/server/html/officAdmin; # html工程路径
location / {
index index.html index.htm;
}
}
server { # http 主服务:
listen 80; # 端口
server_name www.duweiyun.com duweiyun.com; # 域名配置
return 301 https://$server_name$request_uri; # http重定向到https
}
server { # https 服务:
listen 443 ssl; #端口
server_name www.duweiyun.com duweiyun.com; #域名
if ($host !~ ^www ) { # 非www请求 重定向到www域名
return 301 $scheme://www.$host$request_uri;
}
# root /usr/share/nginx/html;
# ssl证书配置:
ssl_certificate /home/cert/duweiyun.pem; # pem证书路径
ssl_certificate_key /home/cert/duweiyun.key; # 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;
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://localhost:9005/; # 代理前端服务
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location /system/login/admin/ {
proxy_pass http://localhost:9006/; # 代理前端服务
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location /offic {
proxy_pass http://offic; # 代理后端服务(location与工程名一致)
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location /detail {
root /home/data/offic/html; # 普通html
index index.html index.htm;
}
#错误页转发:
error_page 404 /404.html;
location = /404.html { #自定义错误页404.html
root /home/server/html/error_page;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html { #自定义错误页50x.html
root /home/server/html/error_page;
}
}
完整配置文件下载(一键启停脚本+自定义错误页面)
常见问题?
- 访问的时候报403 Forbidden 解决方法
◆修改目标目录和文件的安全策略
如果是centos,看一下selinux是否关闭
查看SELinux状态:
# /usr/sbin/sestatus -v
如果SELinux status参数为enabled即为开启状态,则执行修改目录策略命令
# chcon -R -t httpd_sys_rw_content_t /home/server/
◆打开nginx.conf配置,把 user 用户名改为 root 或 其它高权限的用户即可