Answer the question
In order to leave comments, you need to log in
NGINX iframe redirect from https to http or https on port 8085?
Доброго времени суток всем! Я новичок! Недавно столкнулся с проблемой, которая уже 3 день не дает мне покоя.
Вводные: centos 7 + nginx + php72 + wordpress, сайт работает (конфиг nginx mydomain.conf взял с интернетовской статьи https://serveradmin.ru/ustanovka-i-nastroyka-nginx...) все редиректы (www - /; http - https) выполняются. На этой же машине запущено java приложение и по адресу машины 172.16.0.68:8085 приложуха открывается и работает. Сайт работает на https, настроен letsencrypt через certbot.
Вопрос 1 Cтоит задача через iframe добавить на сайт это веб-приложение, работающее с этого же сервера по адресу http://127.0.0.1:8085(http://172.16.0.68:8085)
Но т.к. веб-приложение ходит по http сайт работающий по https страницу не открывает, ругаясь на отсутствие SSL сертификата.
То есть https://mydomain.ru/stranica на странице и он не показывает. Пробовал запускать на другом сайте, который работал по http - все нормально запустилось и работало.
Вопрос 2 Есть ли возможность прописать конфиг так, чтобы на порту 8085 работал https, что так же решит проблему с отображением? Может создать еще виртуальный хост?
мой nginx.conf
server {
listen 80;
server_name mydomain.ru;
root /var/www/mydomain.ru/www/;
index index.php index.html index.htm;
access_log /var/www/mydomain.ru/www/log/access.log main;
error_log /var/www/mydomain.ru/www/log/error.log;
location / {
return 301 https://mydomain.ru$request_uri;
}
location ~* ^.+.(js|css|png|jpg|jpeg|gif|ico|woff)$ {
return 301 https://mydomain.ru$request_uri;
}
location ~ \.php$ {
return 301 https://mydomain.ru$request_uri;
}
location = /favicon.ico {
log_not_found off;
access_log off;
}
location = /robots.txt {
rewrite ^ /robots.txt break;
allow all;
log_not_found off;
access_log off;
}
location ~ /\.ht {
deny all;
}
}
server {
listen 80;
server_name www.mydomain.ru;
rewrite ^ https://mydomain.ru$request_uri? permanent;
}
server {
listen 443 ssl http2;
server_name mydomain.ru;
root /var/www/mydomain.ru/www/;
index index.php index.html index.htm;
access_log /var/www/mydomain.ru/www/log/ssl-access.log main;
error_log /var/www/mydomain.ru/www/log/ssl-error.log;
keepalive_timeout 60;
ssl_certificate /etc/letsencrypt/live/mydomain.ru/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/mydomain.ru/privkey.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
add_header Strict-Transport-Security 'max-age=604800';
location / {
try_files $uri $uri/ /index.php?$args;
location ~* ^.+.(js|css|png|jpg|jpeg|gif|ico|woff)$ {
access_log off;
expires max;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/var/run/php72-fpm.sock;
#fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param DOCUMENT_ROOT /var/www/mydomain.ru/www/;
fastcgi_param SCRIPT_FILENAME /var/www/mydomain.ru/www$fastcgi_script_name;
fastcgi_param PATH_TRANSLATED /var/www/mydomain.ru/www$fastcgi_script_name;
include fastcgi_params;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param HTTPS on;
fastcgi_intercept_errors on;
fastcgi_ignore_client_abort off;
fastcgi_connect_timeout 60;
fastcgi_send_timeout 180;
fastcgi_read_timeout 180;
fastcgi_buffer_size 128k;
fastcgi_buffers 4 256k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
}
location = /favicon.ico {
log_not_found off;
access_log off;
}
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
location ~ /\.ht {
deny all;
}
}
server {
listen 443 ssl http2;
server_name www.mydomain.ru;
rewrite ^ https://mydomain.ru$request_uri? permanent;
}
Answer the question
In order to leave comments, you need to log in
в последнее время отказался от iframe совсем
на мойз взгляд это не больший костыль, зато обладает морем плюсов, такие как возможность работы с адаптивном и стрреплейсом а следоватлеьно и протокол можно тоже подменять ;)
https://thisinterestsme.com/php-curl-proxy/
ps.
замени устаревший TSL, его уже не поддерживает crhome а сертификат понижают в классе с А+ до B
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
To avoid problems with https, you need a valid SSL certificate, which is very difficult to get for ip (without a domain).
In your case, the best option is
1. make a subdomain with a valid https certificate, for example iframe.mydomain.ru
2. in the nginx settings, server_name iframe.mydomain.ru
we do proxy requests for your java application on the required port
location / {
proxy_pass http://172.16.0.68:8085;
}
src="https://iframe.mydomain.ru/..."
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question