部署sapui5应用到linux
为了方便和SAP NetWeaver解耦,把sapui5 开发的fiori程序部署到nginx上,后面升级ui5版本特别容易
1.用nginx做轻量级的web服务器,代理解决跨域问题
fiori app的部署路径
/var/fiori_project/
sapui5的依赖库
/var/fiori_project/ui5lib/
nginx的配置
/etc/nginx/conf.d/
# 通用配置块 - 包含所有location配置
upstream backend_sap {server sap服务器ip:端口;
}upstream backend_common {server 第三方系统的ip;
}# HTTP服务器配置
server {listen 80;server_name localhost 当前web应用服务器的ip;# UI5 资源location /zfiori_home/resources/ {alias /var/fiori_project/ui5lib/resources/;autoindex on;expires 1y;add_header Cache-Control "public, immutable";}location /zfiori_fi01/resources/ {alias /var/fiori_project/ui5lib/resources/;autoindex on;expires 1y;add_header Cache-Control "public, immutable";}location /zfiori_fi02/resources/ {alias /var/fiori_project/ui5lib/resources/;autoindex on;expires 1y;add_header Cache-Control "public, immutable";}location /zfiori_fi03/resources/ {alias /var/fiori_project/ui5lib/resources/;autoindex on;expires 1y;add_header Cache-Control "public, immutable";}location /zfiori_fi04/resources/ {alias /var/fiori_project/ui5lib/resources/;autoindex on;expires 1y;add_header Cache-Control "public, immutable";}location /zfiori_fi06/resources/ {alias /var/fiori_project/ui5lib/resources/;autoindex on;expires 1y;add_header Cache-Control "public, immutable";}# 主应用location /zfiori_home/ {alias /var/fiori_project/zfiori_home/dist/;try_files $uri $uri/ /zfiori_home/index.html;autoindex on;}location /zfiori_fi01/ {alias /var/fiori_project/zfiori_fi01/dist/;try_files $uri $uri/ /zfiori_fi01/index.html;autoindex on;}location /zfiori_fi02/ {alias /var/fiori_project/zfiori_fi02/dist/;try_files $uri $uri/ /zfiori_fi02/index.html;autoindex on;}location /zfiori_fi03/ {alias /var/fiori_project/zfiori_fi03/dist/;try_files $uri $uri/ /zfiori_fi03/index.html;autoindex on;}location /zfiori_fi04/ {alias /var/fiori_project/zfiori_fi04/dist/;try_files $uri $uri/ /zfiori_fi04/index.html;autoindex on;}location /zfiori_fi06/ {alias /var/fiori_project/zfiori_fi06/dist/;try_files $uri $uri/ /zfiori_fi06/index.html;autoindex on;}# 处理API代理location /sap/ {proxy_pass http://backend_sap;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;proxy_set_header Content-Type $http_content_type;proxy_set_header Content-Length $http_content_length;proxy_set_header Authorization $http_authorization;}location /zbak_inf {proxy_pass http://backend_sap;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;proxy_set_header Content-Type $http_content_type;proxy_set_header Content-Length $http_content_length;proxy_set_header Authorization $http_authorization;}location /common/ {proxy_pass http://backend_common;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;}location /message/ {proxy_pass http://backend_common;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;}location /file/ {proxy_pass http://backend_common;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;}# 错误页面error_page 500 502 503 504 /50x.html;location = /50x.html {root html;}
}# HTTPS服务器配置
server {listen 443 ssl;http2 on;server_name localhost 当前web应用服务器的ip;# SSL证书配置ssl_certificate /etc/nginx/ssl/nginx.crt;ssl_certificate_key /etc/nginx/ssl/nginx.key;# SSL安全配置ssl_protocols TLSv1.2 TLSv1.3;ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA384;ssl_prefer_server_ciphers off;ssl_session_cache shared:SSL:10m;ssl_session_timeout 10m;# UI5 资源location /zfiori_home/resources/ {alias /var/fiori_project/ui5lib/resources/;autoindex on;expires 1y;add_header Cache-Control "public, immutable";}location /zfiori_fi01/resources/ {alias /var/fiori_project/ui5lib/resources/;autoindex on;expires 1y;add_header Cache-Control "public, immutable";}location /zfiori_fi02/resources/ {alias /var/fiori_project/ui5lib/resources/;autoindex on;expires 1y;add_header Cache-Control "public, immutable";}location /zfiori_fi03/resources/ {alias /var/fiori_project/ui5lib/resources/;autoindex on;expires 1y;add_header Cache-Control "public, immutable";}location /zfiori_fi04/resources/ {alias /var/fiori_project/ui5lib/resources/;autoindex on;expires 1y;add_header Cache-Control "public, immutable";}location /zfiori_fi06/resources/ {alias /var/fiori_project/ui5lib/resources/;autoindex on;expires 1y;add_header Cache-Control "public, immutable";}# 主应用location /zfiori_home/ {alias /var/fiori_project/zfiori_home/dist/;try_files $uri $uri/ /zfiori_home/index.html;autoindex on;}location /zfiori_fi01/ {alias /var/fiori_project/zfiori_fi01/dist/;try_files $uri $uri/ /zfiori_fi01/index.html;autoindex on;}location /zfiori_fi02/ {alias /var/fiori_project/zfiori_fi02/dist/;try_files $uri $uri/ /zfiori_fi02/index.html;autoindex on;}location /zfiori_fi03/ {alias /var/fiori_project/zfiori_fi03/dist/;try_files $uri $uri/ /zfiori_fi03/index.html;autoindex on;}location /zfiori_fi04/ {alias /var/fiori_project/zfiori_fi04/dist/;try_files $uri $uri/ /zfiori_fi04/index.html;autoindex on;}location /zfiori_fi06/ {alias /var/fiori_project/zfiori_fi06/dist/;try_files $uri $uri/ /zfiori_fi06/index.html;autoindex on;}# 处理API代理location /sap/ {proxy_pass http://backend_sap;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;proxy_set_header Content-Type $http_content_type;proxy_set_header Content-Length $http_content_length;proxy_set_header Authorization $http_authorization;}location /zbak_inf {proxy_pass http://backend_sap;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;proxy_set_header Content-Type $http_content_type;proxy_set_header Content-Length $http_content_length;proxy_set_header Authorization $http_authorization;}location /common/ {proxy_pass http://backend_common;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;}location /message/ {proxy_pass http://backend_common;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;}location /file/ {proxy_pass http://backend_common;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;}# 错误页面error_page 500 502 503 504 /50x.html;location = /50x.html {root html;}
}