首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >nginx前端在https上,后端在http上。

nginx前端在https上,后端在http上。
EN

Stack Overflow用户
提问于 2020-11-16 11:40:24
回答 1查看 1.5K关注 0票数 0

我让nginx在运行Wordpress的have服务器前充当反向代理。我不太确定我的问题是nginx、php还是WordPress,所以我请求帮助。

我有一个运行在Docker中的nginx服务器,它充当一个反向代理。在这个服务器后面有一个this服务器,也运行在Docker中,运行WordPress。

当在http上运行时,这一切都很好。但是我要去https,我不能让它正常工作。

我收到“混合模式”消息,表示样式表和脚本被阻塞,因为它们是通过https提供的。在WordPress中,我将这里添加到wp-config.php中如下所示

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
define('FORCE_SSL_ADMIN', true);
if (strpos($_SERVER['HTTP_X_FORWARDED_PROTO'], 'https') !== false)
$_SERVER['HTTPS']='on';

我也改变了这一点:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
define('WP_HOME', 'https://www.example.com');
define('WP_SITEURL', 'https://www.example.com');

我还将数据库中引用http://www.example.com的所有内容更改为https://www.example.com

当我输入https://www.example.com时,我会收到1条“混合内容”警告,警告您在http上加载样式表,尽管有一个样式表加载得很好。

如果我输入https://www.example.com/wp-admin,我会得到许多样式表和脚本的混合内容。

所有这些链接都可以通过https访问,但它们仍然是通过http提供的。我已经搜索了数据库中的每个文件和所有内容,并且在任何地方都找不到对http://example.com的任何引用。

这是反向代理:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
server {
    listen 80;
    server_name www.example.com example.com;
    return 301 https://www.example.com$request_uri;
}
    
server {
  listen        443 ssl;
  server_name   www.example.com example.com;

  ssl_certificate       /etc/ssl/private/example.com/example.com.crt;
  ssl_certificate_key   /etc/ssl/private/example.com/example.com.key;

  location / {
    proxy_pass  http://10.0.100.10:8082;
    proxy_set_header    X-Real-IP               $remote_addr;
    proxy_set_header    Host                    $host;
    proxy_set_header    X-Forwarded-For         $proxy_add_x_forwarded_for;
    proxy_set_header    X-Forwarded-Ssl         on;
    proxy_set_header    X-Forwarded-Proto       $scheme;
  }
}

,这是后端

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
server {
    server_name _;

    listen 80;

    root /var/www/myapp;
    index index.php index.html index.htm;

    access_log /var/log/nginx/back-access.log;
    error_log /var/log/nginx/back-error.log;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    # PHP-FPM Configuration Nginx
    location ~ \.php$ {
        try_files $uri = 404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass php-domain:9000;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param REQUEST_URI $request_uri;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
    }
}

有人能理解为什么会发生这种情况吗?问题在哪里?

EN

回答 1

Stack Overflow用户

发布于 2020-11-16 12:19:59

我不确定您是否使用此配置将X-Forwarded-Proto HTTP头传递给您的FastCGI后端。你能试试这个吗?

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    location ~ \.php$ {
        try_files $uri = 404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass php-domain:9000;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param REQUEST_URI $request_uri;
        fastcgi_param HTTP_X_FORWARDED_PROTO $http_x_forwarded_proto if_not_empty;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
    }

如果没有帮助,请将您的fastcgi_params文件内容添加到问题中。

更新

有一种方法可以做到这一点,而不改变wp-config.php

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
map $http_x_forwarded_proto $fastcgi_https {
    https   on;
    default $https;
}
server {
    ...
    location ~ \.php$ {
        try_files $uri = 404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass php-domain:9000;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param REQUEST_URI $request_uri;
        fastcgi_param HTTP_X_FORWARDED_PROTO $http_x_forwarded_proto if_not_empty;
        fastcgi_param HTTPS $fastcgi_https if_not_empty;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64864632

复制
相关文章
[Java 并发]读锁/写锁
之前我们都知道在一个变量被读或者写数据的时候每次只有一个线程可以执行,那么今天我们来看一下读写锁,读写两不误ReadWriteLock。
YanL
2020/04/29
1K0
[Java 并发]读锁/写锁
独占锁(写锁)/共享锁(读锁)/互斥锁
独占锁:指该锁一次只能被一个线程所持有。对ReentrantLock和Synchronized而言都是独占锁
名字是乱打的
2022/05/13
1.4K0
独占锁(写锁)/共享锁(读锁)/互斥锁
读时加写锁,写时加读锁,Eureka可真的会玩
在对于读写锁的认识当中,我们都认为读时加读锁,写时加写锁来保证读写和写写互斥,从而达到读写安全的目的。但是就在我翻Eureka源码的时候,发现Eureka在使用读写锁时竟然是在读时加写锁,写时加读锁,这波操作属实震惊到了我,于是我就花了点时间研究了一下Eureka的这波操作。
三友的java日记
2022/12/20
5560
读时加写锁,写时加读锁,Eureka可真的会玩
Go udp 的高性能优化
前段时间(已经是 2 年前了😛)优化了 golang udp client 和 server 的性能问题,我在这里简单描述下 udp 服务的优化过程。 当然,udp 性能本就很高,就算不优化,也轻易可
梦醒人间
2021/09/08
2.2K1
Go udp 的高性能优化
在ReadWriteLock类中读锁为什么不能升级为写锁?
关于读写锁里面有一个锁升级和降级的问题,也就是写锁可以降级为读锁,但是读锁却不能升级为写锁。那么为什么是这样?
我是攻城师
2018/08/03
3K0
一文看懂 Java 锁机制,写得太好了吧!
CPU的基本工作是执行存储的指令序列,即程序。程序的执行过程实际上是不断地取出指令、分析指令、执行指令的过程。
Java小咖秀
2021/07/12
5220
Mysql锁相关锁的分类锁的适用场景MyISAM表锁MyISAM写阻塞读的例子MyISAM读阻塞写例子MyISAM并发插入MyISAM读写并发MyISAM锁调度调节MyISAM锁调度行为解决读写冲突的
锁类型/引擎 行锁 表锁 页锁 MyISAM 有 InnoDB 有 有 BDB(被InnoDB取代) 有 有 锁的分类 表锁:开销小,加锁快,不会死锁,粒度大,冲突率高,并发低。 行锁:开销大,加锁慢,会死锁,粒度小,冲突率低,并发高。 页锁:处于表锁和行锁之间,会死锁。 锁的适用场景 表锁:更适用于查询为主,按少量索引条件更新。 行锁:更适用于大量按索引并发更新少量不同数据,同时又有并发查询。 MyISAM表锁 查看锁争用相关参数:show status
Clive
2018/04/19
1.6K0
[nptl][rwlock]pthread rwlock原理分析
概念: In computer science, a readers–writer (RW) or shared-exclusive lock (also known as a multiple readers/single-writer lock or multi-reader lock) is a synchronization primitive that solves one of the readers–writers problems. An RW lock allows concurrent
皮振伟
2018/04/09
3.5K0
【Hibernate教程】基于主键的单(双)向多对多的关联映射
一、基于主键的单向多对多的关联映射 1、Role类 2、Function类 3、Role.hbm.xml 4、Function.hbm.xml 5、HibernateTest 6、数据库 二、基于主键的双向多对多的关联映射 1、Role类 2、Function类 3、Role.hbm.xml 4、Function.hbm.xml 5、HibernateTest
程序员云帆哥
2022/05/12
4110
【Hibernate教程】基于主键的单(双)向多对多的关联映射
Golang 读、写文件
这种方式每次都会覆盖 test.txt内容,如果test.txt文件不存在会创建。
孤烟
2020/09/27
2.2K0
多主复制下处理写冲突(4)-多主复制拓扑
复制的拓扑结构描述了写请求从一个节点传播到另一个节点的通信路径。若有两个主节点,如图-7,只有一个合理拓扑结构:M1必须把他所有的写同步到M2,反之亦然。当有两个以上M,各种不同拓扑都可能的。如图-8说明了一些例子。
JavaEdge
2022/08/01
4500
多主复制下处理写冲突(4)-多主复制拓扑
如何通过Redis实现多系统单Redis的分布式锁
由于上述方法中加锁和释放锁分别是原子的,但是两个过程组合到一起就不是原子的了,因此高并发情况下,原子性得不到满足,我们采用下面的方法去实现分布式锁 set key value ex|px nx|xx eg: set locktarget 122325 ex 10 nx
名字是乱打的
2022/05/13
2650
如何通过Redis实现多系统单Redis的分布式锁
Go RWMutex:高并发读多写少场景下的性能优化利器
在这篇文章 Go Mutex:保护并发访问共享资源的利器 中,主要介绍了 Go 语言中互斥锁 Mutex 的概念、对应的字段与方法、基本使用和易错场景,最后基于 Mutex 实现一个简单的协程安全的缓存。而本文,我们来看看另一个更高效的 Go 并发原语,RWMutex。
陈明勇
2023/04/24
8760
Go RWMutex:高并发读多写少场景下的性能优化利器
futex的使用_fuel开关
大家好,又见面了,我是你们的朋友全栈君。 futex_t::wake 实际是一个计数器,防止在调用futex_wait函数前调用futex_wake而出现的死等现象, 函数futex只在满足(*addr1 == val)时等待。
全栈程序员站长
2022/11/08
7150
linux进阶40——futex
Futex 是Fast Userspace muTexes的缩写,由Hubertus Franke, Matthew Kirkwood, Ingo Molnar and Rusty Russell共同设计完成。
全栈程序员站长
2022/11/08
1.6K0
springboot 学习mybatis+mysql读写分离(一写多读)+事务
https://github.com/269941633/spring-boot-mybatis-mysql-write-read
凯哥Java
2019/06/28
1.1K0
springboot 学习mybatis+mysql读写分离(一写多读)+事务
无锁编程:c++11基于atomic实现共享读写锁(写优先)
在多线程状态下,对一个对象的读写需要加锁,基于CAS指令的原子语句可以实现高效的线程间协调。关于CAS的概念参见下面的文章:
10km
2022/05/07
1.8K1
如何理解互斥锁、条件变量、读写锁以及自旋锁?
锁是一个常见的同步概念,我们都听说过加锁(lock)或者解锁(unlock),当然学术一点的说法是获取(acquire)和释放(release)。
果冻虾仁
2021/12/08
1.5K0
如何理解互斥锁、条件变量、读写锁以及自旋锁?
Futex系统调用,Futex机制,及具体案例分析[通俗易懂]
线程同步可以说在日常开发中是用的很多,但对于其内部如何实现的,一般人可能知道的并不多。本篇文章将从如何实现简单的锁开始,介绍linux中的锁实现futex的优点及原理。
全栈程序员站长
2022/11/08
3.4K0
Futex系统调用,Futex机制,及具体案例分析[通俗易懂]
点击加载更多

相似问题

处理多读和单写

11

读锁写锁

34

读/写锁

104

多读和单写线程安全?

12

文件读/写锁

40
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文