Cara menggunakan Pengurus Proksi Nginx untuk melaksanakan pengurusan kebenaran akses merentas domain

PHPz
Lepaskan: 2023-09-27 16:43:56
asal
1525 orang telah melayarinya

如何使用Nginx Proxy Manager实现跨域访问的授权管理

Cara menggunakan Pengurus Proksi Nginx untuk mencapai pengurusan kebenaran akses merentas domain

Pengurus Proksi Nginx ialah pelayan proksi berkuasa yang boleh melaksanakan proksi terbalik, pengimbangan beban, proksi terminal SSL/TLS dan fungsi lain. Dalam aplikasi praktikal, kami sering menghadapi masalah dengan akses silang domain bahagian hadapan Untuk melindungi sumber bahagian belakang, kami perlu melaksanakan pengurusan kebenaran. Artikel ini akan memperkenalkan cara menggunakan Pengurus Proksi Nginx untuk melaksanakan pengurusan kebenaran akses merentas domain, dan menyediakan beberapa contoh kod khusus.

  1. Pasang dan konfigurasikan Pengurus Proksi Nginx
    Pertama, kita perlu memasang dan mengkonfigurasi Pengurus Proksi Nginx. Anda boleh meneruskan langkah berikut:

1.1 Pasang Pengurus Proksi Nginx
Anda boleh memuat turun pakej pemasangan Pengurus Proksi Nginx melalui laman web rasmi atau saluran lain, dan memasangnya mengikut dokumentasi rasminya.

1.2 Konfigurasi Pengurus Proksi Nginx
Selepas pemasangan selesai, kita perlu mengkonfigurasi Pengurus Proksi Nginx. Fail konfigurasi biasanya terletak di/etc/nginx/nginx.confAnda boleh menggunakan editor teks untuk membuka fail untuk konfigurasi./etc/nginx/nginx.conf,可以使用文本编辑器打开该文件进行配置。

  1. 配置跨域访问授权管理
    接下来,我们将配置跨域访问的授权管理。具体的配置如下所示:

2.1 定义跨域访问的授权规则
在Nginx Proxy Manager的配置文件中,我们可以使用location指令定义跨域访问的授权规则。例如,我们可以通过以下方式定义一个允许特定域名进行跨域访问的规则:

location /api { add_header 'Access-Control-Allow-Origin' 'http://example.com'; add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS'; add_header 'Access-Control-Allow-Headers' 'Authorization, Content-Type'; add_header 'Access-Control-Allow-Credentials' 'true'; }
Salin selepas log masuk

在上述示例中,我们使用add_header指令添加了一些跨域访问的授权头字段。其中,Access-Control-Allow-Origin字段指定了允许跨域访问的域名;Access-Control-Allow-Methods字段指定了允许的HTTP方法;Access-Control-Allow-Headers字段指定了允许的HTTP头字段;Access-Control-Allow-Credentials字段指定了是否允许携带cookie进行跨域访问。

2.2 配置跨域访问的错误处理
为了提高安全性,当跨域访问的授权规则不匹配时,我们可以配置Nginx Proxy Manager返回特定的错误信息。例如,可以通过以下方式配置返回403 Forbidden错误:

location /api { if ($http_origin != http://example.com) { return 403; } }
Salin selepas log masuk

在上述示例中,我们使用if指令判断跨域访问的域名是否符合要求。如果不符合要求,则返回403错误。

  1. 运行Nginx Proxy Manager
    配置完成后,我们可以通过以下命令启动Nginx Proxy Manager:
sudo service nginx start
Salin selepas log masuk

此时,Nginx Proxy Manager将开始监听配置的端口,并根据配置的跨域访问授权规则进行处理。

  1. 前端代码示例
    最后,我们提供一个简单的前端代码示例,用于演示如何进行跨域访问。具体示例如下:
const url = 'http://api.example.com'; const headers = { 'Authorization': 'Bearer xxxxxxxx', 'Content-Type': 'application/json' }; fetch(url, { method: 'GET', headers: headers, credentials: 'include' }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));
Salin selepas log masuk

在上述示例中,我们使用fetch函数发送一个跨域访问的GET请求。其中,url变量指定了跨域访问的目标URL;headers变量指定了请求的HTTP头字段;credentials

    Konfigurasikan pengurusan kebenaran akses merentas domain

    Seterusnya, kami akan mengkonfigurasi pengurusan kebenaran akses merentas domain. Konfigurasi khusus adalah seperti berikut:

    2.1 Tentukan peraturan kebenaran untuk akses merentas domainDalam fail konfigurasi Pengurus Proksi Nginx, kami boleh menggunakan arahan lokasi untuk menentukan peraturan kebenaran untuk akses merentas domain. Sebagai contoh, kami boleh mentakrifkan peraturan yang membenarkan akses merentas domain untuk nama domain tertentu dengan cara berikut: rrreeeDalam contoh di atas, kami menggunakan arahan add_headeruntuk menambah beberapa medan pengepala kebenaran untuk akses merentas domain. Antaranya, medan Access-Control-Allow-Originmenentukan nama domain yang membenarkan akses merentas domain medan Access-Control-Allow-Methodsmenentukan HTTP yang dibenarkan kaedah; Access-Control-Allow-Headersmenentukan medan pengepala HTTP yang dibenarkan medan Access-Control-Allow-Credentialsmenentukan sama ada kuki dibenarkan untuk dibawa; akses merentas domain. 2.2 Konfigurasikan pengendalian ralat untuk akses merentas domainUntuk meningkatkan keselamatan, apabila peraturan kebenaran untuk akses merentas domain tidak sepadan, kami boleh mengkonfigurasi Pengurus Proksi Nginx untuk mengembalikan maklumat ralat tertentu. Contohnya, ralat 403 Forbidden yang dikembalikan boleh dikonfigurasikan dengan cara berikut: rrreeeDalam contoh di atas, kami menggunakan arahan ifuntuk menentukan sama ada nama domain untuk akses merentas domain memenuhi keperluan . Jika keperluan tidak dipenuhi, ralat 403 dikembalikan.
      Jalankan Pengurus Proksi NginxSelepas konfigurasi selesai, kita boleh memulakan Pengurus Proksi Nginx melalui arahan berikut: rrreeePada masa ini, Pengurus Proksi Nginx akan mula mendengar port yang dikonfigurasikan dan berdasarkan peraturan kebenaran akses merentas domain yang dikonfigurasikan diproses.
        Contoh kod bahagian hadapanAkhir sekali, kami menyediakan contoh kod bahagian hadapan yang mudah untuk menunjukkan cara melaksanakan akses merentas domain. Contoh khusus adalah seperti berikut: rrreeeDalam contoh di atas, kami menggunakan fungsi fetchuntuk menghantar permintaan GET untuk akses merentas domain. Antaranya, pembolehubah urlmenentukan URL sasaran untuk akses merentas domain, pembolehubah headersmenentukan medan pengepala HTTP untuk kredential; > parameter menentukan sama ada untuk membawa Kuki untuk akses merentas domain. Ringkasan: Artikel ini memperkenalkan cara menggunakan Pengurus Proksi Nginx untuk melaksanakan pengurusan kebenaran akses merentas domain, dan menyediakan beberapa contoh kod khusus. Dengan mengkonfigurasi peraturan akses merentas domain Pengurus Proksi Nginx, kami boleh mengawal akses kepada sumber belakang secara fleksibel untuk melindungi keselamatan sistem. Saya harap artikel ini dapat memberi manfaat kepada pembaca.

Atas ialah kandungan terperinci Cara menggunakan Pengurus Proksi Nginx untuk melaksanakan pengurusan kebenaran akses merentas domain. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!