Wordpress 在WP网站中使用Jenkins API-访问被拒绝
我正试图通过开发一个自定义插件,在我的WordPress网站中使用。关于我的安装,我使用Docker图像:WordPress、Apache、PHP、Jenkins。 问题是我无法从我的WP站点访问我的Jenkins API,我仍然面临“拒绝访问”错误 对于Docker安装,我支持公司代理Wordpress 在WP网站中使用Jenkins API-访问被拒绝,wordpress,apache,docker,jenkins,Wordpress,Apache,Docker,Jenkins,我正试图通过开发一个自定义插件,在我的WordPress网站中使用。关于我的安装,我使用Docker图像:WordPress、Apache、PHP、Jenkins。 问题是我无法从我的WP站点访问我的Jenkins API,我仍然面临“拒绝访问”错误 对于Docker安装,我支持公司代理http://proxy:8080我设置了一个本地docker网络 这里是我的docker compose.yml: version: '2' services: web: build:
http://proxy:8080
我设置了一个本地docker网络
这里是我的docker compose.yml
:
version: '2'
services:
web:
build:
context: './docker/'
dockerfile: './httpd/Dockerfile'
depends_on:
- db
- php
ports:
- "80:80"
networks:
test4exoplatform_local-network:
ipv4_address: 199.20.0.6
volumes:
- ./html/:/var/www/html/
container_name: web
db:
build:
context: './docker/db/'
ports:
- "3306:80"
networks:
test4exoplatform_local-network:
ipv4_address: 199.20.0.9
volumes:
- ./db_data:/var/lib/mysql
restart: always
container_name: db
wordpress:
build:
context: './docker/wordpress/'
environment:
WP_PROXY_HOST: http://proxy
WP_PROXY_PORT: 8080
ports:
- "3362:80"
links:
- db
volumes:
- ./wp-content:/var/www/html/html/pages/wp-content
- ./wp-config.php:/var/www/html/html/pages/wp-config.php
networks:
test4exoplatform_local-network:
ipv4_address: 199.20.0.5
container_name: wordpress
php:
build:
context: './docker/php/'
ports:
- "9999:80"
networks:
test4exoplatform_local-network:
ipv4_address: 199.20.0.4
volumes:
- ./:/var/www/html/
container_name: php
jenkins:
build:
context: './docker/jenkins/'
user: root
ports:
- "9091:8080"
networks:
test4exoplatform_local-network:
ipv4_address: 199.20.0.7
container_name: jenkins
volumes:
- /tmp/jenkins:/var/jenkins_home
networks:
test4exoplatform_local-network:
external: true
在我的WordPress图像中,我可以访问Jenkins one(通过telnet Jenkins 8080)
在jenkins中,我还设置了代理设置
这里是我的WP插件中的代码,以便访问Jenkins API:
$username = 'username';
$api_token = 'token';
$url = 'http://localhost:9091';
$jobName = 'test';
ch = curl_init();
curl_setopt($ch, CURLOPT_PROXY, "proxy:8080");
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0");
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false );
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false );
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_USERPWD, $username . ":" . $api_token);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url . '/job/' . $jobName . '/build?token=' . $api_token);
$result = executeCurl($ch);
var_dump($result);
它给我带来了这个错误,我真的不知道如何继续:
The following error was encountered while trying to retrieve the URL: http://localhost:9091/job/test/build?...
Access Denied.
令牌和用户名是正确的,因为当我输入链接(http://localhost:9091/job/test/build?token=token
)在我的浏览器中,它确实可以工作并启动jenkins构建
我还尝试使用我为jenkins docker映像设置的ip地址(199.20.0.7
)作为访问API的链接(如199.20.0.7/job/test/build?token=token
),但我得到了一个错误:无法检索请求的URL
这可能是网络错误吗
编辑
好的,我做了一些可能会有帮助的修改,我得到了关于我的错误的更多信息,但仍然不理解。。
因此,我删除了docker compose.yml文件中指定的ip地址(因为我认为它阻止了我的请求)。
现在,当我试图通过我的WP网站启动jenkins构建时,php日志让我联想到:
php | * Hostname was NOT found in DNS cache
php | * Trying 193.56.47.20...
php | * Connected to proxy (193.56.47.20) port 8080 (#0)
php | * Server auth using Basic with user 'username'
php | > POST http://localhost:9091/job/test/build?token=token HTTP/1.1
php | Host: localhost:9091
php |
php | < HTTP/1.1 403 Forbidden
php | * Server squid/3.5.20 is not blacklisted
php | < Server: squid/3.5.20
php | < X-Squid-Error: ERR_ACCESS_DENIED 0
在DNS缓存中找不到主机名
php |*正在尝试193.56.47.20。。。
php |*连接到代理(193.56.47.20)端口8080(#0)
php |*使用Basic和用户“用户名”进行服务器身份验证
php |>POSThttp://localhost:9091/job/test/build?token=token HTTP/1.1
php |主机:localhost:9091
php|
php |