Rumah >Operasi dan penyelenggaraan >Nginx >Cara menggunakan nginx untuk menyelesaikan masalah akses merentas domain kuki
1. Ditulis sebelum ini
Baru-baru ini, adalah perlu untuk memindahkan empat projek pelayan di Alibaba Cloud kepada projek baharu yang disediakan oleh pelanggan Empat pelayan asal adalah Tahap Pertama nama domain dan nama domain peringkat kedua. Contohnya, aaa.abc.com dan bbb.abc.com dan ccc.abc.com. Antaranya, aaa.abc.com log masuk dengan menetapkan maklumat dalam kuki kepada .abc.com. Sistem lain boleh berkongsi kuki ini. Walau bagaimanapun, tiada nama domain yang digunakan dalam empat pelayan baharu, hanya empat IP:
192.168.0.1 Pelayan log masuk tunggal
192.168.0.2
192.168. 0.3
192.168.0.4
Oleh kerana setiap pelayan mempunyai dua projek, kedua-duanya menggunakan log masuk tunggal, ia mengambil masa terlalu lama untuk mengubah suai kaedah log masuk kongsi baharu, jadi saya mencari silang -kuki domain di Internet Log masuk, cuba dan setdomain beberapa kali ke pelayan 2, 3 dan 4 dalam pelayan log masuk tunggal 192.168.0.1 Hasilnya tidak sesuai kerana penyemak imbas tidak membenarkannya. Kemudian, saya secara tidak sengaja melihat bahawa nginx boleh berkongsi kuki melalui penipuan. Jadi saya fikir syarikat asal menggunakan nginx dan mempunyai penggunaan ini.
2. Konfigurasi nginx asal
Mari kita bincangkan tentang pemasangan nginx dahulu Terdapat banyak tutorial di Internet, jadi saya tidak akan menjelaskan secara terperinci akan merujuk kepada pemasangan dalam linux Mulakan nginx. Apa yang perlu diberi perhatian ialah pelbagai withs selepas ./configure Saya menghadapi beberapa masalah semasa proses permulaan konfigurasi:
nginx: [emerg] unknown directive "aio" in
plus --with-file-aio
Salin kod tersebut. seperti berikut:
memulakan nginx: nginx: [emerg] soket inet6 tidak disokong pada platform ini dalam “[::]:80” daripada
Tambah --dengan-ipv6 selepas ia membuat.
Selepas pemasangan selesai. Terutamanya konfigurasi nginx.conf
Konfigurasi pelayan asal nginx.conf:
# for more information on configuration, see: # * official english documentation: http://nginx.org/en/docs/ # * official russian documentation: http://nginx.org/ru/docs/ user root; worker_processes 2; worker_cpu_affinity 1000 0100; error_log logs/error.log; pid logs/nginx.pid; events { worker_connections 2048; } http { log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log logs/access.log main; gzip on; gzip_min_length 1000; gzip_buffers 4 8k; gzip_types text/plain application/javascript application/x-javascript text/css application/xml; client_max_body_size 8m; client_body_buffer_size 128k; sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; include mime.types; default_type application/octet-stream; connection_pool_size 512; aio on; open_file_cache max=1000 inactive=20s; # load modular configuration files from the /etc/nginx/conf.d directory. # see http://nginx.org/en/docs/ngx_core_module.html#include # for more information. # 主要配置在这里,nginx.conf配置都是一样 include /usr/local/nginx/conf/conf.d/*.conf; server { listen 80 default_server; listen [::]:80 ipv6only=on default_server; server_name _; root html; # load configuration files for the default server block. include /usr/local/nginx/conf/default.d/*.conf; location / { } error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } } }
Konfigurasi pelayan asal
conf.d/*.conf ialah reverse-proxy.conf
server { listen 80; server_name m.abc.com.cn; location / { root /usr/share/nginx/html/; index index.html index.htm; } location ~ \.(jsp|do)?$ { proxy_redirect off; proxy_set_header host $host; proxy_set_header x-real-ip $remote_addr; proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for; proxy_pass http://localhost:8084; } if ($http_user_agent ~* "qihoobot|baiduspider|googlebot|googlebot-mobile|googlebot-image|mediapartners-google|adsbot-google|feedfetcher-google|yahoo! slurp|yahoo! slurp china|youdaobot|sosospider|sogou spider|sogou web spider|msnbot|ia_archiver|tomato bot") { return 403; } access_log /home/logs/nginx/m.abc.com.cn_access.log; } server { listen 80; server_name store.abc.com.cn *.store.abc.com.cn; location / { proxy_redirect off; proxy_set_header host $host; proxy_set_header x-real-ip $remote_addr; proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for; proxy_pass http://localhost:8081; } access_log /home/logs/nginx/store.abc.com.cn_access.log; } server { listen 80; server_name shopcenter.abc.com.cn; location / { proxy_redirect off; proxy_set_header host $host; proxy_set_header x-real-ip $remote_addr; proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for; proxy_pass http://10.45.100.222:8082; } access_log /home/logs/nginx/shopcenter.abc.com.cn_access.log; } server { listen 80; server_name search.abc.com.cn; location / { proxy_redirect off; proxy_set_header host $host; proxy_set_header x-real-ip $remote_addr; proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for; proxy_pass http://10.45.100.68:8083; } access_log /home/logs/nginx/search.abc.com.cn_access.log; }
Selepas konfigurasi di atas, selepas nginx dimulakan, pelayan yang berbeza boleh diakses dengan mengakses nama domain yang berbeza. Dan kerana mereka semua mempunyai nama domain peringkat kedua .abc.com.cn. Jadi cookies boleh dikongsi.
Struktur fail nginx ialah:
3. Konfigurasi nginx yang diubah suai
Terutamanya proksi terbalik. conf adalah berbeza
server { listen 9998; server_name 192.168.0.1:9998; location /servlets/ { proxy_redirect off; proxy_set_header host $host; proxy_set_header x-real-ip $remote_addr; proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for; proxy_pass http://192.168.0.1:8088; } location / { root /usr/local/nginx/html/web/; index index.html index.htm; } location ~ \.(jsp|do)?$ { proxy_redirect off; proxy_set_header host $host; proxy_set_header x-real-ip $remote_addr; proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for; proxy_pass http://192.168.0.1:8088; proxy_http_version 1.1; proxy_set_header upgrade $http_upgrade; proxy_set_header connection "upgrade"; proxy_read_timeout 700s; } if ($http_user_agent ~* "qihoobot|baiduspider|googlebot|googlebot-mobile|googlebot-image|mediapartners-google|adsbot-google|feedfetcher-google|yahoo! slurp|yahoo! slurp china|youdaobot|sosospider|sogou spider|sogou web spider|msnbot|ia_archiver|tomato bot") { return 403; } access_log /usr/local/nginx/logs/www.abc.com.cn_access.log; } server { listen 9994; server_name 192.168.0.1:9994; location / { proxy_redirect off; root /usr/local/nginx/html/weixin/; index index.html index.htm; } location ~ \.(jsp|do)?$ { proxy_redirect off; proxy_set_header host $host; proxy_set_header x-real-ip $remote_addr; proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for; proxy_pass http://localhost:8084; } if ($http_user_agent ~* "qihoobot|baiduspider|googlebot|googlebot-mobile|googlebot-image|mediapartners-google|adsbot-google|feedfetcher-google|yahoo! slurp|yahoo! slurp china|youdaobot|sosospider|sogou spider|sogou web spider|msnbot|ia_archiver|tomato bot") { return 403; } access_log /usr/local/nginx/logs/m.abc.com.cn_access.log; } server { listen 9990; server_name store.abc.com.cn *.store.abc.com.cn; location / { proxy_redirect off; proxy_set_header host $host; proxy_set_header x-real-ip $remote_addr; proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for; proxy_pass http://localhost:8081; } access_log /usr/local/nginx/logs/store.abc.com.cn_access.log; } server { listen 9992; server_name 192.168.0.1:9992; location / { proxy_redirect off; proxy_set_header host $host; proxy_set_header x-real-ip $remote_addr; proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for; proxy_pass http://192.168.0.2:8082; } access_log /usr/local/nginx/logs/shopcenter.abc.com.cn_access.log; } server { listen 9993; server_name 192.168.0.1:9993; location / { proxy_redirect off; proxy_set_header host $host; proxy_set_header x-real-ip $remote_addr; proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for; proxy_pass http://192.168.0.3:8083; } access_log /usr/local/nginx/logs/search.abc.com.cn_access.log; }
supaya 192.168.0.1:9998 boleh digunakan sebagai pelayan titik tunggal, dan domain selepas log masuk ialah 192.168.0.1. 0.2 dan 0.3 yang lain boleh diakses melalui port berbeza 192.168.0.1nginx dan pelayan titik tunggal, jadi nama domain 0.1 boleh dikongsi.
Atas ialah kandungan terperinci Cara menggunakan nginx untuk menyelesaikan masalah akses merentas domain kuki. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!