Saya menggunakan Asp.Net Core di Raspbian saya.

Saya menggunakan NGINX sebagai Server web saya

Saya mencoba memuat sumber daya dan terhubung ke pengontrol api web saya

Masalahnya adalah uri saya sedang diubah dari http ke https.

Karena saya ingin menjelajahi situs ini di tempat lain di jaringan saya, saya sangat terbatas pada apa yang dapat saya capai. Jika saya menggunakan Pi itu sendiri dan menggunakan localhost atau 127.0.0.1 maka semuanya dimuat dengan baik. Jika saya mengaksesnya menggunakan alamat dhcp gagal.

Ini berfungsi karena saya menggunakan Open SSL tetapi hanya di tingkat lokal.

Ini NGINX saya:

server {
listen 80 default_server;
listen [::]:80 default_server;

# SSL configuration
#
# listen 443 ssl default_server;
# listen [::]:443 ssl default_server;
#
# Note: You should disable gzip for SSL traffic.
# See: https://bugs.debian.org/773332
#
# Read up on ssl_ciphers to ensure a secure configuration.
# See: https://bugs.debian.org/765782
#
# Self signed certs generated by the ssl-cert package
# Don't use them in a production server!
#
# include snippets/snakeoil.conf;
    listen               443;
    ssl                  on;
    ssl_certificate      /home/pi/web/localhost.crt;
    ssl_certificate_key  /home/pi/web/localhost.key;
    ssl_ciphers          HIGH:!aNULL:!MD5;


root /var/www/html;

# Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html;

server_name _;






location /FindMotion/ {
        proxy_pass http://localhost:5000/;
        proxy_http_version 1.1;
        proxy_set_header Connection keep-alive;
        proxy_set_header X-Forwarded-For    $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Host   $http_host;
        proxy_set_header X-Forwarded-Proto  http;
        proxy_set_header X-Forwarded-Path   /FindMotion;
}
}

Ini Javascript saya:

var timer;
function RenderImage() {
    try {

        $.ajax({
            url: "/Connection/ImageData",
            success: function(response) {
                var image = new Image();
                image.src = 'data:image/png;base64,' +response;
                document.body.appendChild(image);
                timer = setTimeout(function() { RenderImage(); }, 10000);
            },
            error: function(XMLHttpRequest, textStatus, errorThrown) {
                $("#divImage").html("ERROR: " + errorThrown);
                timer = setTimeout(function() { RenderImage(); }, 10000);
            }
        });
    } catch (err) {
        $("#divImage").html(err);
        timer = setTimeout(function() { RenderImage(); }, 10000);
    }
}

RenderImage();

Ini adalah pengontrol saya:

[ HttpGet ]
[ Route( "Connection/ImageData" ) ]
public string GetImageData()
{
    var img = new Bitmap( "20190521141101456.jpg" );

    using ( MemoryStream mStream = new MemoryStream() )
    {       
            img.Save( mStream, img.RawFormat );
            var bytes = mStream.ToArray();
            var data = Convert.ToBase64String( bytes );
            return data;
        }
    }
}

Kesalahan di konsol penjelajahan adalah: https://192.168.0.12/Connection/ImageData 404 (Tidak Ditemukan)

Apakah saya benar dalam berpikir ini tidak dapat berfungsi karena Open SSL tidak memadai?

Dan jika demikian, apakah saya juga benar dalam berpikir bahwa saya harus mendapatkan SSL yang 'tepat' dan saya memerlukan nama domain untuk ini?

Jika demikian, untuk setiap produk yang saya jual/produksi, saya memerlukan domain dan alamat statis untuk masing-masing produk?

Apakah saya mendapatkan ini sepenuhnya salah atau benar? Tolong apa pilihan saya? Saya telah mencoba banyak hal selama beberapa hari terakhir dan tidak ada yang berhasil.

Saya sangat membutuhkan saran tolong.

Terima kasih

0
Andrew Simpson 8 Agustus 2019, 17:42

1 menjawab

Jawaban Terbaik

Saya pikir ini lebih mungkin merupakan masalah konfigurasi nginx. 404 tidak ditemukan akan menyarankan tidak ada apa-apa di 403. Bukan berarti versi TSL atau versi SSL tidak cocok untuk Anda. Anda mungkin akan mendapatkan 400 (Permintaan Buruk) atau 495 (Kesalahan SSL) dari nginx.

Cobalah seperti ini. Saya tidak yakin tentang itu. Tapi saya belum pernah melihat http dan https dikonfigurasi di blok yang sama. Sekarang saya bukan sysadmin jauh dari itu, tetapi server saya sendiri diatur lebih seperti ini. Saya juga meletakkan baris ssl_protocols di sana untuk menentukan semuanya pada dasarnya. Mungkin itu membantu. Tetapi seperti yang saya katakan, saya tidak berpikir itu akan menjadi masalah TLS atau SSL ketika Anda mendapatkan kembali 404.

server {
listen 80 default_server;
listen [::]:80 default_server;
return 301 https://192.168.0.12$request_uri;
}

server {
    listen               443;
    ssl                  on;
    ssl_certificate      /home/pi/web/localhost.crt;
    ssl_certificate_key  /home/pi/web/localhost.key;
    ssl_ciphers          HIGH:!aNULL:!MD5;
    #ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

root /var/www/html;

# Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html;

server_name _;


location /FindMotion/ {
        proxy_pass http://localhost:5000/;
        proxy_http_version 1.1;
        proxy_set_header Connection keep-alive;
        proxy_set_header X-Forwarded-For    $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Host   $http_host;
        proxy_set_header X-Forwarded-Proto  http;
        proxy_set_header X-Forwarded-Path   /FindMotion;
}
}
}
1
Max 11 Agustus 2019, 12:43