Rumah  >  Artikel  >  Operasi dan penyelenggaraan  >  Cara Nginx melaksanakan konfigurasi kawalan akses berasaskan kuki

Cara Nginx melaksanakan konfigurasi kawalan akses berasaskan kuki

WBOY
WBOYasal
2023-11-08 19:26:071953semak imbas

Cara Nginx melaksanakan konfigurasi kawalan akses berasaskan kuki

Cara Nginx melaksanakan konfigurasi kawalan akses berasaskan kuki, contoh kod khusus diperlukan

Dalam aplikasi web, kawalan akses ialah fungsi utama. Melalui konfigurasi kawalan akses berasaskan kuki, pengguna boleh dihadkan daripada mengakses halaman atau sumber tertentu. Artikel ini akan memperkenalkan cara menggunakan Nginx untuk melaksanakan kawalan akses tersebut dan memberikan contoh kod khusus.

  1. Dayakan modul http_auth_request Nginx
    Pertama, anda perlu memastikan bahawa Nginx telah mendayakan modul http_auth_request. Jika ia tidak didayakan, anda boleh menambah modul dengan mengedit fail konfigurasi Nginx.
cd /path/to/nginx/source/
./configure --with-http_auth_request_module
make
sudo make install
  1. Konfigurasikan peraturan kawalan akses Nginx
    Dalam fail konfigurasi Nginx, anda boleh menentukan peraturan kawalan akses melalui arahan lokasi. Dalam contoh ini, kami akan menyediakan halaman yang dilindungi yang hanya boleh diakses oleh pengguna dengan kuki tertentu.
location /protected {
    auth_request /auth;
    error_page 401 = @error401;
}

location = /auth {
    internal;
    proxy_pass http://backend/auth;
    proxy_pass_request_body off;
    proxy_set_header Content-Length "";
    proxy_set_header X-Original-URI $request_uri;
}

Dalam konfigurasi di atas, lokasi /protected mentakrifkan halaman yang dilindungi dan perintah auth_request /auth akan menghantar permintaan kepada /auth kod> lokasi untuk pengesahan. Jika pengesahan berjaya, akses ke halaman dibenarkan jika tidak, ralat 401 akan dikembalikan. location /protected定义了一个受保护的页面,auth_request /auth指令将会发送一个请求到/auth位置进行认证。如果认证成功,则允许访问该页面;否则,将会返回401错误。

location = /auth定义了一个内部请求,它将会被传递给后端服务器进行认证。在这个例子中,我们假设后端服务器的地址是http://backend,认证接口为/auth。通过proxy_pass指令实现请求的转发,并通过proxy_pass_request_body offproxy_set_header Content-Length ""禁用请求体的传递。另外,还通过proxy_set_header X-Original-URI $request_uri传递原始的URI信息给后端服务器。

  1. 编写后端服务器的认证接口
    在上一步的配置中,我们假设后端服务器的地址为http://backend,认证接口为/auth。现在,我们来编写该接口的实际实现。

实现一个简单的认证接口可以使用任何Web编程语言(如Python、PHP或Java)来完成。在这里,我们以Python为例,使用Flask框架实现一个简单的接口。

from flask import Flask, request

app = Flask(__name__)

@app.route('/auth', methods=['POST'])
def auth():
    cookie = request.headers.get('Cookie')
    if cookie == 'your_cookie_value':
        return 'OK'
    else:
        return 'Unauthorized', 401

if __name__ == '__main__':
    app.run()

在上述代码中,我们定义了一个/auth的路由,它接受POST请求。通过request.headers.get('Cookie')

lokasi = /auth mentakrifkan permintaan dalaman, yang akan dihantar ke pelayan bahagian belakang untuk pengesahan. Dalam contoh ini, kami menganggap bahawa alamat pelayan bahagian belakang ialah http://backend dan antara muka pengesahan ialah /auth. Laksanakan pemajuan permintaan melalui arahan proxy_pass dan lumpuhkan penghantaran badan permintaan melalui proxy_pass_request_body off dan proxy_set_header Content-Length "". Selain itu, maklumat URI asal dihantar ke pelayan bahagian belakang melalui proxy_set_header X-Original-URI $request_uri.
    1. Tulis antara muka pengesahan pelayan bahagian belakang
      Dalam konfigurasi langkah sebelumnya, kami menganggap bahawa alamat pelayan bahagian belakang ialah http://backend dan antara muka pengesahan ialah /auth. Sekarang, mari kita tulis pelaksanaan sebenar antara muka ini.

    Melaksanakan antara muka pengesahan mudah boleh dilakukan menggunakan mana-mana bahasa pengaturcaraan web (seperti Python, PHP atau Java). Di sini, kami mengambil Python sebagai contoh dan menggunakan rangka kerja Flask untuk melaksanakan antara muka yang mudah.

    rrreee

    Dalam kod di atas, kami mentakrifkan laluan /auth, yang menerima permintaan POST. Dapatkan maklumat kuki dalam permintaan melalui request.headers.get('Cookie') dan bandingkannya dengan kuki lalai. Jika ia sepadan, "OK" dikembalikan untuk menunjukkan pengesahan yang berjaya jika tidak, ralat 401 dikembalikan untuk menunjukkan pengesahan yang gagal.

    🎜🎜Uji kawalan akses berasaskan kuki🎜Selepas melengkapkan langkah di atas, mulakan semula perkhidmatan Nginx dan akses halaman dilindungi yang ditakrifkan dalam konfigurasi. Hanya apabila permintaan yang mengandungi kuki yang betul dihantar boleh halaman itu berjaya diakses. 🎜🎜🎜Ringkasnya, kami telah melaksanakan kawalan akses berasaskan kuki melalui modul http_auth_request Nginx, konfigurasi peraturan kawalan akses dan antara muka pengesahan pelayan bahagian belakang. Konfigurasi sedemikian boleh mengawal akses pengguna ke halaman atau sumber tertentu secara fleksibel. 🎜🎜Nota: Dalam persekitaran pengeluaran sebenar, konfigurasi kawalan akses yang lebih ketat perlu dilakukan berdasarkan keperluan sebenar dan keperluan keselamatan, dan logik pengesahan yang lebih kompleks perlu dilaksanakan dalam antara muka pengesahan pelayan bahagian belakang. Contoh di atas hanya memberikan idea asas dan demonstrasi, dan pelaksanaan khusus perlu diselaraskan mengikut situasi tertentu. 🎜

Atas ialah kandungan terperinci Cara Nginx melaksanakan konfigurasi kawalan akses berasaskan kuki. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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