Совместная работа nginx и Spark java framework

385
20 апреля 2017, 15:31

На сервере стоит nginx/1.10.2. Вот мой примитивный код с использованием Spark:

public static void main(String[] args) {
        get("/listen", (request, response) -> {
            return new JSONObject(response);
        });
    }

Вот перенаправление от nginx в nginx.conf:

location /listen {
    proxy_pass http://127.0.0.1:4567;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
}

По умолчанию Spark слушает как раз 4567 порт.

Собственно вопрос: мне нужно просто, чтобы я мог обрабатывать входящие запросы, при том, что указать 80 порт я не могу. Как мне это сделать? При переходе на сайт/listen ошибка 404, если на прямую IP:4567, тоже 404, и IP/listen тоже 404. Возможно, я совсем ничего не понимаю и путаюсь. Что мне нужно создать, или какое перенаправление сделать, чтобы я мог слушать порт спарком?

Сам спарк вот что выдает:

102981 [qtp436813930-13] WARN org.eclipse.jetty.http.HttpParser - 
Illegal character 0x16 in state=START for buffer HeapByteBuffer@48aca39b[p=1,l=137,c=8192,r=136]={\x16<<<\x03\x03\x00\x84\x01\x00\x00\x80\x03\x03X\xF6^D\x82\xDe\xAf...\x03\x01\x03\x02\x02\x03\x02\x01\x02\x02\xFf\x01\x00\x01\x00>>>\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00...\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00}
102982 [qtp436813930-13] WARN org.eclipse.jetty.http.HttpParser - bad HTTP parsed: 400 Illegal character 0x16 for HttpChannelOverHttp@5f6b49bd{r=0,c=false,a=IDLE,uri=null}
114019 [qtp436813930-16] INFO spark.http.matching.MatcherFilter - The requested route [/] has not been mapped in Spark for Accept: [null]
166475 [qtp436813930-14] WARN org.eclipse.jetty.http.HttpParser - Illegal character 0x16 in state=START for buffer HeapByteBuffer@48aca39b[p=1,l=157,c=8192,r=156]={\x16<<<\x03\x03\x00\x98\x01\x00\x00\x94\x03\x03X\xF6^\x83\x14\x8cW...k-bots.xyz\xFf\x01\x00\x01\x00>>>)\r\n\r\n30\r\n\x00\x00\x00\x00\x00\x00\x00\x00...\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00}
166475 [qtp436813930-14] WARN org.eclipse.jetty.http.HttpParser - bad HTTP parsed: 400 Illegal character 0x16 for HttpChannelOverHttp@2f3b3447{r=0,c=false,a=IDLE,uri=null}
175801 [qtp436813930-15] INFO spark.http.matching.MatcherFilter - The requested route [/] has not been mapped in Spark for Accept: [null]

Прогуглил каждую строчку и ничего толкового не нашел.

В общем, сверху приведены мои попытки и кусочки кода, взятые тут же на so. Очень прошу помочь разобраться :)
Нужно следующее:

  • Я указываю адрес назначения для запросов от vk api вида http://site.ru/smthing
  • По дефолту запросы, скорее всего, на 80 или 8080 порт идут, а их прослушивать я не могу, значит, нужно перенаправлять. В другом вопросе мне подсказали, как это сделать, я написал также, перезапустил nginx, и результат описан выше. Я либо не так что-то сделал, либо не полностью
  • Также нужно, чтобы спарк корректно прослушивал порт и обрабатывал POST-запросы. Если я запускаю вышеописанный примитивный код у себя на компьютере, захожу в браузере на http://localhost:4567/listen, я вижу {}, если же опять же на своем компьютере запускаю еще одно приложение, которое шлет простейший POST-запрос на этот адрес, получаю эксепшн Unexpected code Response{protocol=http/1.1, code=404, message=Not Found, url=http://localhost:4567/listen}. Не понимаю вообще, как это работает. Если я посылаю такой же точно простейший POST-запрос на php-файл на моем же сервере, все работает отлично.

Не прошу готового решения за меня, но прошу хотя бы ткнуть меня носом в ошибки и подсказать, как их исправить, и как можно было бы дополнить. Буду крайне благодарен :)

READ ALSO
Операции с boolean в Java

Операции с boolean в Java

Не могу правильно понять манипуляцию с булевым значением в цикле for

240
Мгновенная обработка ввода текста в JTextField

Мгновенная обработка ввода текста в JTextField

Нужно, чтобы при вводе символа в JTextField мгновенно выполнялся код, замеряющий время ввода слова, важна каждая миллисекундаСейчас пытаюсь на главный...

355
JSP в качестве контроллера - моветон?

JSP в качестве контроллера - моветон?

На сайте нашел пример где контроллером выступает сама JSP, насколько это плохо или наоборот хорошо? Каковы преимущества/недостатки такой реализации?

222
Как быстро удалить файл?

Как быстро удалить файл?

Пишу файловый менеджер и захотелось сделать все операции быстрееНачал с удаления

202