使用 nginx 来为 Wordpress 加 SSL 的问题 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
dangyuluo
V2EX    NGINX

使用 nginx 来为 Wordpress 加 SSL 的问题

  •  
  •   dangyuluo 2023-03-08 13:20:27 +08:00 1944 次点击
    这是一个创建于 1022 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我有一个 Docker 服务跑着 Wordpress ,域名假设是 wp.name.com ,使用 HTTP ,无 HTTPS 。为了使用 SSL ,再另一个 docker 容器里跑了个 nginx ,监听 443 端口然后反向代理了

    server { listen 80; server_name yourdomain.com; return 301 https://$host$request_uri; } server { listen 443 ssl; server_name yourdomain.com; ssl_certificate /etc/nginx/certs/yourdomain.com.crt; ssl_certificate_key /etc/nginx/certs/yourdomain.com.key; location / { proxy_pass http://<wordpress-ip>:80; 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://wp.name.com打开网页是没问题了,但是 Wordpress 使用的静态文件还是在 HTTP 上,因此加载失败。请问这种情况有什么好办法么?谢谢

    11 条回复    2023-03-09 03:08:44 +08:00
    julyclyde
        1
    julyclyde  
       2023-03-08 13:22:18 +08:00
    我记得 wordpress 里给出的静态资源好像都是绝对路径
    所以需要改一遍数据库
    Kinnice
        2
    Kinnice  
       2023-03-08 13:22:51 +08:00
    `UPDATE wp_posts SET post_cOntent= replace( post_content, 'http 域名','https 域名');`
    leaflxh
        3
    leaflxh  
       2023-03-08 13:28:39 +08:00
    改一下 80 升级 443 的逻辑?

    server {
    listen 80;
    server_name www.域名.com;
    rewrite ^(.*)$ https://${server_name}$1 permanent;
    }

    查询自 https://blog.csdn.net/zhuchunyan_aijia/article/details/121374258
    shinciao
        4
    shinciao  
       2023-03-08 13:31:47 +08:00
    先在 wordpress 管理后台的设置里把站点地址和站点 URL 改成 https 的试试,不行的话就要按楼上的刷数据库了
    leaflxh
        5
    leaflxh  
       2023-03-08 14:42:05 +08:00
    以下配置未复现:

    docker-compose.yaml:

    version: '3.1'
    services:

    wordpress:
    image: wordpress
    restart: always
    ports:
    - 8080:80
    environment:
    WORDPRESS_DB_HOST: db
    WORDPRESS_DB_USER: exampleuser
    WORDPRESS_DB_PASSWORD: examplepass
    WORDPRESS_DB_NAME: exampledb
    volumes:
    - wordpress:/var/www/html

    db:
    image: mysql:5.7
    restart: always
    environment:
    MYSQL_DATABASE: exampledb
    MYSQL_USER: exampleuser
    MYSQL_PASSWORD: examplepass
    MYSQL_RANDOM_ROOT_PASSWORD: '1'
    volumes:
    - db:/var/lib/mysql

    volumes:
    wordpress:
    db:

    nginx 配置:

    server {
    listen 80;
    server_name example.com;
    return 301 https://$host$request_uri;
    }

    server {
    listen 443 ssl;
    server_name example.com;
    ssl_certificate /etc/nginx/cert/example.com/cert.crt;
    ssl_certificate_key /etc/nginx/cert/example.com/cert.key;
    client_max_body_size 1G;
    client_body_buffer_size 16M;
    location / {
    proxy_pass http://127.0.0.1:8080;
    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;
    }
    }
    xuanbg
        6
    xuanbg  
       2023-03-08 14:53:02 +08:00
    简单反代一下不行吗?当然如果图片 url 是绝对路径的话,那肯定要在数据库里面把 http 替换成 https 才行。
    r00t7
        7
    r00t7  
       2023-03-08 15:03:18 +08:00
    dangyuluo
        8
    dangyuluo  
    OP
       2023-03-08 16:35:34 +08:00
    @r00t7 谢谢 Nginx Proxy Manager 好用
    r00t7
        9
    r00t7  
       2023-03-08 17:38:19 +08:00
    @dangyuluo 主要是最后的内容

    /**请求标头告知**/
    if (isset($_SERVER['HTTP_X_FORWARDED_PROTO'])
    && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') {
    $_SERVER['HTTPS'] = 'on';
    }
    kingfalse
        10
    kingfalse  
       2023-03-08 22:46:54 +08:00 via Android
    lnmp 一把梭子搞定
    dangyuluo
        11
    dangyuluo  
    OP
       2023-03-09 03:08:44 +08:00
    @r00t7 其实我没加这个也好用。。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1646 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 16:19 PVG 00:19 LAX 08:19 JFK 11:19
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86