dev-sidecar-doc icon indicating copy to clipboard operation
dev-sidecar-doc copied to clipboard

适用于sealos的方案

Open flt6 opened this issue 8 months ago • 0 comments

修改自docker

镜像:nginx CPU和内存拉到最小 网络配置:暴露80开启公网访问

高级配置:

启动命令:/bin/bash 运行参数:/app/start.sh 环境变量:

HOSTNAME=公网访问处显示的地址
PASSWORD=自己设的密码
CONTEXT_PATH=自己设随机字符串
SSL_CERTIFICATE=/app/ssl/cert.crt
SSL_CERTIFICATE_KEY=/app/ssl/cert.key

配置文件:

  • /app/ssl/cert.crt 内容任意
  • /app/ssl/cert.key 内容任意
  • /app/start.sh 和docker相同
cp -f  '/etc/nginx/nginx-template.conf' '/etc/nginx/nginx.conf'
sed -i 's#${SSL_CERTIFICATE}#'"$SSL_CERTIFICATE"'#g' '/etc/nginx/nginx.conf'
sed -i 's#${SSL_CERTIFICATE_KEY}#'"$SSL_CERTIFICATE_KEY"'#g' '/etc/nginx/nginx.conf'
sed -i 's#${HOSTNAME}#'"$HOSTNAME"'#g' '/etc/nginx/nginx.conf'
sed -i 's#${PASSWORD}#'"$PASSWORD"'#g' '/etc/nginx/nginx.conf'
sed -i 's#${CONTEXT_PATH}#'"$CONTEXT_PATH"'#g' '/etc/nginx/nginx.conf'
nginx -g 'daemon off;'
  • /etc/nginx/nginx-template.conf
user  nginx;
worker_processes  auto;
worker_rlimit_nofile 10000;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;

events {
    use  epoll;
    multi_accept on;
    worker_connections  10240;
}

http {



    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;


    log_format  main  '[$time_local] $remote_addr "$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;
    #gzip  on;

    proxy_set_header  X-Real-IP   $remote_addr;
    proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;


    keepalive_timeout  65;
    client_max_body_size 50m;

    server {

        listen 80;  # 1.1版本后这样写
        server_name ${HOSTNAME} ; #填写绑定证书的域名
        # ssl_certificate ${SSL_CERTIFICATE};  # 指定证书的位置,绝对路径
        # ssl_certificate_key ${SSL_CERTIFICATE_KEY};  # 绝对路径,同上
        ssl_session_timeout 5m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; #按照这个协议配置
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;#按照这个套件配置
        ssl_prefer_server_ciphers on;

        client_max_body_size 50M;
        client_body_buffer_size 10M;

        location ^~/${CONTEXT_PATH}/ {
            resolver 1.1.1.1 ipv6=off;


            if ( $http_dspassword != '${PASSWORD}' ){
                return 403;
            }

            set $_full_uri $uri$is_args$args;
            if ( $_full_uri ~ /${CONTEXT_PATH}/([^/]+)/(.*) ){
               set  $_host $1;
               set  $_uri $2;
            }
            if ( $scheme = "http" ){
                set $new_scheme "https";
            }
            proxy_pass $new_scheme://$_host/$_uri;
            proxy_redirect https://${HOSTNAME}/${CONTEXT_PATH}/ /;
            proxy_buffer_size 64k;
            proxy_buffers 64 64k;
            proxy_busy_buffers_size 1m;
            proxy_temp_file_write_size 512k;
            proxy_max_temp_file_size 128m;
            # proxy_set_header referer $scheme://$_host; 要去掉
            proxy_set_header Host $_host;
            proxy_ssl_server_name on;
            proxy_set_header dspassword '';
        }
        location /${CONTEXT_PATH}/robots.txt {
           resolver 1.1.1.1;
           deny all;
        }
        location / {
           resolver 1.1.1.1;
           deny all;
        }
    }
    include /etc/nginx/conf.d/*.conf;
}

已知bug:无法访问仅http的网页

flt6 avatar Apr 30 '25 05:04 flt6