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.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.conf
Anda boleh menggunakan editor teks untuk membuka fail untuk konfigurasi./etc/nginx/nginx.conf
,可以使用文本编辑器打开该文件进行配置。
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'; }
在上述示例中,我们使用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; } }
在上述示例中,我们使用if
指令判断跨域访问的域名是否符合要求。如果不符合要求,则返回403错误。
sudo service nginx start
此时,Nginx Proxy Manager将开始监听配置的端口,并根据配置的跨域访问授权规则进行处理。
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));
在上述示例中,我们使用fetch
函数发送一个跨域访问的GET请求。其中,url
变量指定了跨域访问的目标URL;headers
变量指定了请求的HTTP头字段;credentials
Seterusnya, kami akan mengkonfigurasi pengurusan kebenaran akses merentas domain. Konfigurasi khusus adalah seperti berikut:
add_header
untuk menambah beberapa medan pengepala kebenaran untuk akses merentas domain. Antaranya, medan
Access-Control-Allow-Origin
menentukan nama domain yang membenarkan akses merentas domain medan
Access-Control-Allow-Methods
menentukan HTTP yang dibenarkan kaedah;
Access-Control-Allow-Headers
menentukan medan pengepala HTTP yang dibenarkan medan
Access-Control-Allow-Credentials
menentukan 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
if
untuk menentukan sama ada nama domain untuk akses merentas domain memenuhi keperluan . Jika keperluan tidak dipenuhi, ralat 403 dikembalikan.
fetch
untuk menghantar permintaan GET untuk akses merentas domain. Antaranya, pembolehubah
url
menentukan URL sasaran untuk akses merentas domain, pembolehubah
headers
menentukan 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!