第一步:/etc/nginx/nginx.conf
配置如下:
user www-data;
worker_processes auto;
pid /run/nginx.pid;
error_log /var/log/nginx/error.log;
include /etc/nginx/modules-enabled/*.conf;
events {
worker_connections 768;
# multi_accept on;
}
http {
##
# Basic Settings
##
sendfile on;
tcp_nopush on;
types_hash_max_size 2048;
# server_tokens off;
# server_names_hash_bucket_size 64;
# server_name_in_redirect off;
include /etc/nginx/mime.types;
default_type application/octet-stream;
##
# Logging Settings
##
access_log /var/log/nginx/access.log;
##
# Virtual Host Configs
##
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
#反向代理+负载均衡
upstream loginServer {
#最少连接方式
least_conn;
##负载均衡应用服务器A:
server 172.21.16.16:8091;
}
# HTTPS服务器配置
server {
listen 443 ssl http2; # 启用HTTP/2
server_name jhtg.ser01.tjxzhd.com;
# SSL证书路径(需替换为实际路径)
ssl_certificate /etc/nginx/ssl/jhtg.ser01.tjxzhd.com.pem;
ssl_certificate_key /etc/nginx/ssl/jhtg.ser01.tjxzhd.com.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256';
client_max_body_size 200M;
root /ipa;
location / {
index index.html index.htm;
try_files uri uri/ =404;
}
location /login {
# 注意:代理目标保持HTTP协议
proxy_pass http://loginServer/login/accountLogin;
proxy_redirect off;
proxy_buffering off;
proxy_request_buffering 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;
proxy_set_header X-Forwarded-Proto $scheme;
}
location /rechargeCallback {
# 注意:代理目标保持HTTP协议
proxy_pass http://172.21.16.16:8091/game/recharge;
proxy_redirect off;
proxy_buffering off;
proxy_request_buffering 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;
proxy_set_header X-Forwarded-Proto $scheme;
}
location /ws {
# 注意:代理目标保持HTTP协议
proxy_pass http://172.21.16.16:11001/ws;
# WebSocket 核心配置
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
# 传递头信息
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; # 此时应为 https
# 超时设置
proxy_read_timeout 3600s;
proxy_send_timeout 3600s;
proxy_buffering off;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
# 针对 IPA 和 plist 文件的特殊配置(苹果 OTA 必需)
location /apps {
types {
text/html html;
application/octet-stream ipa; # 确保 IPA 正确识别
text/xml plist; # 确保 plist 正确识别(浏览器显示XML而非下载)
}
expires 1h; # 短期缓存,适合频繁更新的安装包
add_header Cache-Control "public, max-age=3600"; # 明确缓存策略
# 核心:确保能正确找到文件
try_files uri uri/ =404;
}
}
}
第二步:ipa---apps--下面afd.html fengyun.ipa manifest.plist 三个文件

afd.html
<a href="itms-services://?action=download-manifest&url=https://jhtg.ser01.tjxzhd.com/apps/manifest.plist">IOS downloa
</a>
manifest.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>items</key>
<array>
<dict>
<key>assets</key>
<array>
<dict>
<key>kind</key>
<string>software-package</string>
<key>url</key>
<string>https://jhtg.ser01.tjxzhd.com/apps/fengyun.ipa\</string>
</dict>
</array>
<key>metadata</key>
<dict>
<key>bundle-identifier</key>
<string>domain</string>
<key>bundle-version</key>
<string>1.0.0</string>
<key>kind</key>
<string>software</string>
<key>subtitle</key>
<string>App Subtitle</string>
<key>title</key>
<string>App Title</string>
</dict>
</dict>
</array>
</dict>
</plist>
第三步:
https://jhtg.ser01.tjxzhd.com/apps/afd.html
|
|
https://jhtg.ser01.tjxzhd.com/apps/manifest.plist
|
|
https://jhtg.ser01.tjxzhd.com/apps/fengyun.ipa
第四部:千万不用腾讯和阿里的oss