The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  вход/выход  слежка  RSS
"403 при попытке выполнить POST"
Вариант для распечатки  
Пред. тема | След. тема 
Форум WEB технологии (nginx)
Изначальное сообщение [ Отслеживать ]

"403 при попытке выполнить POST"  +/
Сообщение от Alting email(ok) on 24-Авг-16, 12:01 
Добрый день!
В компании развернут проприетарный bitbucket. Слушает порт 7990. На нем же локально поднят nginx на 80 порту, дабы проксировать запросы и не указывать порт в URL:
server {
listen 80;
server_name bitbucket.company.ru bitbucket;

location / {
proxy_pass http://127.0.0.1:7990;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
port_in_redirect off;
proxy_connect_timeout 600;
client_max_body_size 100m;
error_log /usr/local/nginx/logs/stash.error.log;
access_log /usr/local/nginx/logs/stash.access.log;
}
}
Все работает.

Снаружи доступ организован также через nginx по https:

server {
listen 80;
server_name bitbucket.сompany.ru;
add_header  X-Robots-Tag "noindex, nofollow, nosnippet, noarchive";
return 301 https://bitbucket.company.ru$request_uri;
}

server {
  server_name bitbucket.company.ru;
  listen 443 ssl;
#SSL
ssl on;
ssl_session_timeout 24h;
ssl_certificate /etc/letsencrypt/live/bitbucket.company.ru/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/bitbucket.company.ru/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/bitbucket.company.ru/chain.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS;
ssl_session_cache shared:SSL:10m;
add_header Strict-Transport-Security "max-age=31536000;";
resolver 8.8.8.8 8.8.4.4 valid=300s;
ssl_stapling on;
ssl_stapling_verify on;
resolver_timeout 10s;
ssl_dhparam /etc/pki/nginx/dhparam.pem;

location / {
proxy_pass http://12.17.1.136:7990;
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-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_redirect off;
proxy_send_timeout 100;
proxy_read_timeout 100;
proxy_buffers 4 32k;
proxy_connect_timeout 600;
client_max_body_size 100m;
port_in_redirect off;
error_log /var/log/nginx/bitbucket.company.ru.error.log;
access_log /var/log/nginx/bitbucket.company.ru.access.log;
}
}

На любой POST запрос - 403 Forbidden:

213.87.136.158 - - [24/Aug/2016:10:50:25 +0300] "POST /rest/api/latest/projects/ATSB/repos/autotransact/pull-requests/5/comments?version=&avatarSize=64&markup=true HTTP/1.1" 403 54 "https://bitbucket.company.ru/projects/ATSB/repos/autotransac... "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36"
104.45.18.178 - - [24/Aug/2016:10:51:01 +0300] "GET /rest/api/latest/projects/ATSB/repos/autotransact/pull-requests/5/comments?version=&avatarSize=64&markup=true HTTP/1.1" 401 163 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) SkypeUriPreview Preview/0.5"213.87.136.158 - - [24/Aug/2016:10:50:25 +0300] "POST /rest/api/latest/projects/ATSB/repos/autotransact/pull-requests/5/comments?version=&avatarSize=64&markup=true HTTP/1.1" 403 54 "https://bitbucket.company.ru/projects/ATSB/repos/autotransac... "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36"
104.45.18.178 - - [24/Aug/2016:10:51:01 +0300] "GET /rest/api/latest/projects/ATSB/repos/autotransact/pull-requests/5/comments?version=&avatarSize=64&markup=true HTTP/1.1" 401 163 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) SkypeUriPreview Preview/0.5"

На разницу IP в логах прошу не обращать внимания - разные клиенты. Просто, нужно было показать, что GET запросы отрабатывает нормально, POST - 403.

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по ответам | RSS]

1. "403 при попытке выполнить POST"  +/
Сообщение от ыы on 24-Авг-16, 12:58 
>  proxy_pass http://127.0.0.1:7990;
>  proxy_pass http://12.17.1.136:7990;

Так и надо?

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "403 при попытке выполнить POST"  +/
Сообщение от Alting email(ok) on 24-Авг-16, 13:33 
>>  proxy_pass http://127.0.0.1:7990;
>>  proxy_pass http://12.17.1.136:7990;
> Так и надо?

Да. Я же писал, один nginx прямо на хосте с bitbucket, чтобы порт не вводить, а другой nginx - внешний.

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "403 при попытке выполнить POST"  +/
Сообщение от Alting email(ok) on 24-Авг-16, 14:40 
>>>  proxy_pass http://127.0.0.1:7990;
>>>  proxy_pass http://12.17.1.136:7990;
>> Так и надо?
> Да. Я же писал, один nginx прямо на хосте с bitbucket, чтобы
> порт не вводить, а другой nginx - внешний.

Взял сертификаты с внешнего nginx сервера и подложил на внутренний, поправив конфиг с принудительным перенаправлением с 80 на 443 порт. И получил ту же ошибку POST.
Т.е., проблема, именно в SSL конфигурации.

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

4. "403 при попытке выполнить POST"  +/
Сообщение от eRIC (ok) on 24-Авг-16, 14:50 
> Взял сертификаты с внешнего nginx сервера и подложил на внутренний, поправив конфиг
> с принудительным перенаправлением с 80 на 443 порт. И получил ту
> же ошибку POST.
> Т.е., проблема, именно в SSL конфигурации.

proxy_set_header X-Forwarded-Proto $scheme; попробуйте добавьте и проверьте

+

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; <----- тут непонятно, он таком виде нужен?


Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

5. "403 при попытке выполнить POST"  +/
Сообщение от Alting email(ok) on 24-Авг-16, 16:40 
>> Взял сертификаты с внешнего nginx сервера и подложил на внутренний, поправив конфиг
>> с принудительным перенаправлением с 80 на 443 порт. И получил ту
>> же ошибку POST.
>> Т.е., проблема, именно в SSL конфигурации.
> proxy_set_header X-Forwarded-Proto $scheme; попробуйте добавьте и проверьте
> +
> proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; <----- тут непонятно,
> он таком виде нужен?

Разобрался. Дело все-таки было в bitbucket. Нужно было конфиг томката допилить для SSL
Спасибо всем большое за помощь! Смутил именно forbidden, а на самом деле, просто nginx-у некуда было слать POST.

Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

6. "403 при попытке выполнить POST"  +/
Сообщение от _ (??) on 24-Авг-16, 17:19 
> Разобрался. Дело все-таки было в bitbucket.

Ожидаемо ...
> Нужно было конфиг томката допилить для SSL

Но как?! (С) Один джентльмен
У тебя по конфигурации вроде как SSL заканчивается на самом nginx-e и до Tomcat-a не доходит?
Хотим грязных подробностей! (С)

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

7. "403 при попытке выполнить POST"  +/
Сообщение от Alting email(ok) on 24-Авг-16, 17:37 
>> Разобрался. Дело все-таки было в bitbucket.
> Ожидаемо ...
>> Нужно было конфиг томката допилить для SSL
> Но как?! (С) Один джентльмен
> У тебя по конфигурации вроде как SSL заканчивается на самом nginx-e и
> до Tomcat-a не доходит?
> Хотим грязных подробностей! (С)

Step 1: Configure the Tomcat Connector
Find the normal (non-SSL) Connector directive in Tomcat's  <Bitbucket home directory>/shared/server.xml file, and add the scheme,   proxyName, and proxyPort attributes as shown below. Instead of mycompany.com, set the proxyName attribute to your domain name that the nginx server will be configured to serve. This informs Bitbucket Server of the domain name and port of the requests that reach it via nginx, and is important for the correct operation of the Bitbucket Server functions that construct URLs.

secure="true"
     scheme="https"
     proxyName="mycompany.com"
     proxyPort="443" />
1
<Connector port="7990"
2
     protocol="HTTP/1.1"
3
     connectionTimeout="20000"
4
     useBodyEncodingForURI="true"
5
     redirectPort="443"
6
     compression="on"
7
     compressableMimeType="text/html,text/xml,text/plain,text/css,application/json,application/javascript,application/x-javascript"
8
     secure="true"
9
     scheme="https"
10
     proxyName="mycompany.com"
11
     proxyPort="443" />

Ну, вот, как-то так...

Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору


Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру