为了方便和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;
}
}
2.效果
