nginx - Jenkins Https 反向代理配置在 centos 中不起作用
问题描述
我已经在 centos 中安装了 nginx 和 jenkins 服务器。我想用 https 连接我的詹金斯服务器。所以我已经配置了反向代理。但它不起作用,我收到以下错误
以下是我的配置值
文件 - /etc/nginx/sites-enabled/default
server {
listen 80;
return 301 https://$host$request_uri;
}
server {
listen 443;
server_name 134.68.44.235;
ssl_certificate /etc/nginx/cert.crt;
ssl_certificate_key /etc/nginx/cert.key;
ssl on;
ssl_session_cache builtin:1000 shared:SSL:10m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
ssl_prefer_server_ciphers on;
access_log /var/log/nginx/jenkins.access.log;
location / {
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;
# Fix the “It appears that your reverse proxy set up is broken" error.
proxy_pass http://localhost:8080;
proxy_read_timeout 90;
proxy_redirect http://localhost:8080 https://134.68.44.235;
}
}
文件 /etc/default/jenkins
JENKINS_ARGS="--webroot=/var/cache/jenkins/war --httpListenAddress=127.0.0.1 --httpPort=$HTTP_PORT -ajp13Port=$AJP_PORT"
注意:我可以使用http://134.68.44.235:8080访问 jenkins 站点
但是我无法使用 https 访问它,我安装了证书并按照本文中的步骤进行操作, 我不确定我缺少什么,请任何人就此提出建议。
解决方案
下面的这段代码应该可以正常工作,您必须编辑内容部分以匹配您希望 Jenkins 为 Web UI 提供服务的 FQDN 或 IP,以及有效的 SSL CERT 路径和 SSL KEY 路径(如果您想提供 https)。
upstream app_server {
server 127.0.0.1:8080 fail_timeout=3;
}
server {
listen 80;
server_name <FQDN OR IP>;
return 301 https://$server_name$request_uri;
}
server {
listen 443;
server_name <FQDN OR IP>;
ssl on;
ssl_certificate /<PATH>/<TO>/<YOUR SSL CERT>;
ssl_certificate_key /<PATH>/<TO>/<YOUR SSL KEY>;
ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers RC4:HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
# Redirect any /* request to port 8080
location / {
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;
if ($request_method = 'GET') {
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Headers' '*';
add_header 'Access-Control-Allow-Methods' 'GET, POST';
add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range,Location';
}
proxy_redirect http:// https://;
proxy_pass http://app_server;
}
}
推荐阅读
- tensorflow - tf.keras.preprocessing.image.ImageDataGenerator random_transform 不执行重新缩放
- python - Flask-restful 使用嵌套字段生成带有嵌套响应的文档,得到 TypeError: Object of type Nested is not JSON serializable
- node.js - 在 azure devops 中在管道作业级别拥有 .env 文件的最佳方法是什么
- c - 来自用户的字符串输入,之前没有声明它的大小
- jquery - 如何在 Ajax 函数内的 jquery 中选择 id?
- paypal - Paypal 智能按钮检查邮政编码 onApprove
- javascript - moment.js 包含的特定日期格式和可选时间
- c# - 是否可以在 C# 中将字符串解析为 ConsoleColor
- sql - SQL未找到数据异常未执行
- android - Android:“应用程序未设置:此应用程序仍处于开发模式”用于 Facebook 登录?2020年