我使用Centos 7在端口80上将nginx配置为端口8080上Apache服务器的代理服务器。
我成功配置了http,但是在安装后让我们加密Apache的证书,我看到Apache正在直接接收https的流量。我试图让nginx接收所有HTTP和HTTPS的流量,但面临问题,
我做了很多更改,例如禁用apache来侦听端口443,并且只收听8080。 我配置nginx来监听80和443,另外我删除了apache的证书并添加到nginx配置文件。目前。
nginx配置如下:
server {
listen 80;
listen [::]:80 default_server;
#server_name _;
server_name www.example.com;
root /usr/share/nginx/html;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location / {
proxy_pass http://my.server.ip.add:8080;
root /usr/share/nginx/html;
proxy_redirect off;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
server {
listen 443 default_server;
server_name www.example.com;
root /usr/share/nginx/html;
ssl on;
ssl_certificate /etc/letsencrypt/live/www.example.com/cert.pem;
ssl_certificate_key /etc/letsencrypt/live/www.example.com/privkey.pem;
ssl_prefer_server_ciphers on;
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:50m;
ssl_session_tickets off;
# Diffie-Hellman parameter for DHE ciphersuites, recommended 2048 bits
#ssl_dhparam /etc/pki/nginx/dh2048.pem;
# intermediate configuration. tweak to your needs.
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers 'ECDHE-RSA--REMOVED-SOME-HERE-SHA';
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 https;
}
}
注意:我使用的是php 7.0
当前网站正在处理https和http,其中包含1个已知问题,即用户图片未加载。但我不确定它是由apache还是nginx提供的,在RESPONSE中我可以看到“nginx / 1.10.2”
我实际上要实现的是:我试图同时运行它们 node.js和apache使用nginx。我还没有开始节点。
我的问题:
答案 0 :(得分:1)
晚上好, 首先,您在基础架构级别所做的所有考虑都是非常好的,在我看来,代理配置尽管在此时实施困难是最好的。
我已经使用它一段时间了,好处是巨大的。但是,我想问你正在使用什么类型的云基础设施,因为有很多东西会根据技术基础设施而发生变化。例如,我只使用与CloudFlare或其他AWS完全不同的Google Cloud Platform。
从结构的角度来看,所做的配置过于清晰且不清楚。您应该尝试这种方式:首先,使用上游域名指令输入http上下文,并使用Apache输入服务器IP地址,然后通过包含proxy_params文件和snippet ssl的参数来声明服务器和位置上下文。
如果您希望并帮助我了解我们采用的基础架构,我们可以看到如何一起进行配置,但因为每个基础架构都响应不同的配置,所以它迫在眉睫。
它也适用于php7.0。例如,使用php7.0配置PrestaShop 1.7.1.1我不得不对CMS的php.ini代码进行大量更改,因为我没有在FPM中使用CGI,但正如我所说的那样非常多变。