Ausführliche Erläuterung, wie während der Miniprogrammentwicklung mehrere Domänennamen gleichzeitig auf dem Nginx-Port überwacht werden

巴扎黑
Freigeben: 2017-05-15 11:41:03
Original
3204 Leute haben es durchsucht

Zusammenfassung: Heutzutage werden IP-Ressourcen öffentlicher Netzwerke immer wertvoller, daher ist die Anwendung der Multi-Domain-Überwachung sehr weit verbreitet! Die sogenannte Multi-Domain-Namensüberwachung bedeutet, dass ein Port, z. B. 80 oder 443, verwendet wird, um mehrere Domain-Eintragsnamen zu überwachen! Die gebräuchlichste Methode ist wie folgt: server { listen 443 ssl; server_name xxx.xxx.cn...

Jetzt werden die IP-Ressourcen öffentlicher Netzwerke immer wertvoller, weshalb die Überwachung mehrerer Domänennamen weit verbreitet ist! Die sogenannte Multi-Domain-Namensüberwachung besteht darin, einen Port, z. B. 80 oder 443, zu verwenden, um mehrere Eintrags-Domainnamen zu überwachen! Die gebräuchlichsten Methoden sind wie folgt:

Server {

listen 443 ssl;

server_name xxx .xxx.cn;

ssl_certificate ssl/server.pem;

ssl_certificate_key ssl/server.key;

.... ..

}


Ausführliche Erläuterung, wie während der Miniprogrammentwicklung mehrere Domänennamen gleichzeitig auf dem Nginx-Port überwacht werden

Heute werfen wir einen Blick auf die häufig gestellten Fragen während des Entwicklungsprozesses von Miniprogrammen:

1. Wie kann man mehrere Domänennamen auf demselben Nginx-Port gleichzeitig überwachen?

Wenn Sie einen neuen Domänennamen aktivieren, müssen Sie nur einen anderen ServerKonfigurationsdatei starten und ihn in das vhosts-Verzeichnis einfügen. Es wird nicht gemeldet, dass der Port vorhanden ist besetzt. Die meisten Leute, die Nginx pflegen, wissen das. Allerdings gibt es hier etwas zu beachten: Nginx-Instanzen können nicht überschritten werden. Viele Kollegen sind es gewohnt, mehrere Nginx-Instanzen in derselben virtuellen Maschine oder demselben Cloud-Host zu zu installieren. Wenn Sie einen bestimmten Port in Instanz 1 verwenden und diesen Port dann verwenden, um verschiedene Domänennamen in Instanz 2 zu binden, dann bin ich es. Es tut mir leid. , der Fehler wurde ordnungsgemäß gemeldet:

nginx: [emerg] bind() to 0.0.0.0:xxxx failed (98: Address bereits in Verwendung)
nginx: [emerg] konnte immer noch nicht bind()

Persönlicher Vorschlag: Installieren Sie nicht mehrere Nginx-Instanzen auf derselben virtuellen Maschine oder demselben Cloud-Host.


2. Wie kann man http und https gleichzeitig überwachen?

Dafür besteht immer noch eine große Nachfrage. Manchmal müssen unsere Zertifikate auf harten Load-Balancern wie A10 oder F5 installiert werden Es müssen keine Zertifikate installiert werden. Hören Sie einfach auf den http-Port. Gleichzeitig verweist der Intranet-DNS die A-Adresse direkt auf den Server. Zu diesem Zeitpunkt muss das Zertifikat auf dem Server installiert werden. In diesem Szenario muss der Server sowohl HTTP- als auch HTTPS-Ports gleichzeitig überwachen, um den Intranet-HTTPS-Domänennamen aufzulösen, und die Überwachung des HTTP-Ports dient dazu, Proxy-HTTP-Anfragen aus der DMZ-Zone umzukehren. Auf diese Weise kann der https-Domänenname des internen und externen Netzwerks vereinheitlicht werden.

Die häufigste Konfiguration ist wie folgt

Server {

8080;

listen 443 ssl;

Servername xxx.xxx.cn;;

ssl_certificate ssl/server.pem;

ssl_certificate_key ssl/server.key;

......

}

3. Gängige Methoden der chinesischen TranskodierungMD5Verschlüsselung

var rotateLeft = function(lValue, iShiftBits) {
return(lValue << iShiftBits) | (lValue >>> (32 - iShiftBits));
}
var addUnsigned = function(lX, lY) {
var lX4, lY4, lX8, lY8, lResult;
lX8 = (lX & 0x80000000);
lY8 = (lY & 0x80000000);
lX4 = (lX & 0x40000000);
lY4 = (lY & 0x40000000);
lResult = (lX & 0x3FFFFFFF) + (lY & 0x3FFFFFFF);
if(lX4 & lY4) return(lResult ^ 0x80000000 ^ lX8 ^ lY8);
if(lX4 | lY4) {
if(lResult & 0x40000000) return(lResult ^ 0xC0000000 ^ lX8 ^ lY8);
else return(lResult ^ 0x40000000 ^ lX8 ^ lY8);
} else {
return(lResult ^ lX8 ^ lY8);
}
}
var F = function(x, y, z) {
return(x & y) | ((~x) & z);
}
var G = function(x, y, z) {
return(x & z) | (y & (~z));
}
var H = function(x, y, z) {
return(x ^ y ^ z);
}
var I = function(x, y, z) {
return(y ^ (x | (~z)));
}
var FF = function(a, b, c, d, x, s, ac) {
a = addUnsigned(a, addUnsigned(addUnsigned(F(b, c, d), x), ac));
return addUnsigned(rotateLeft(a, s), b);
};
var GG = function(a, b, c, d, x, s, ac) {
a = addUnsigned(a, addUnsigned(addUnsigned(G(b, c, d), x), ac));
return addUnsigned(rotateLeft(a, s), b);
};
var HH = function(a, b, c, d, x, s, ac) {
a = addUnsigned(a, addUnsigned(addUnsigned(H(b, c, d), x), ac));
return addUnsigned(rotateLeft(a, s), b);
};
var II = function(a, b, c, d, x, s, ac) {
a = addUnsigned(a, addUnsigned(addUnsigned(I(b, c, d), x), ac));
return addUnsigned(rotateLeft(a, s), b);
};
var convertToWordArray = function(string) {
var lWordCount;
var lMessageLength = string.length;
var lNumberOfWordsTempOne = lMessageLength + 8;
var lNumberOfWordsTempTwo = (lNumberOfWordsTempOne - (lNumberOfWordsTempOne % 64)) / 64;
var lNumberOfWords = (lNumberOfWordsTempTwo + 1) * 16;
var lWordArray = Array(lNumberOfWords - 1);
var lBytePosition = 0;
var lByteCount = 0;
while(lByteCount < lMessageLength) {
lWordCount = (lByteCount - (lByteCount % 4)) / 4;
lBytePosition = (lByteCount % 4) * 8;
lWordArray[lWordCount] = (lWordArray[lWordCount] | (string.charCodeAt(lByteCount) << lBytePosition));
lByteCount++;
}
lWordCount = (lByteCount - (lByteCount % 4)) / 4;
lBytePosition = (lByteCount % 4) * 8;
lWordArray[lWordCount] = lWordArray[lWordCount] | (0x80 << lBytePosition);
lWordArray[lNumberOfWords - 2] = lMessageLength << 3;
lWordArray[lNumberOfWords - 1] = lMessageLength >>> 29;
return lWordArray;
};
var wordToHex = function(lValue) {
var WordToHexValue = "",
WordToHexValueTemp = "",
lByte, lCount;
for(lCount = 0; lCount <= 3; lCount++) {
lByte = (lValue >>> (lCount * 8)) & 255;
WordToHexValueTemp = "0" + lByte.toString(16);
WordToHexValue = WordToHexValue + WordToHexValueTemp.substr(WordToHexValueTemp.length - 2, 2);
}
return WordToHexValue;
};
var uTF8Encode = function(string) {
string = string.replace(/\x0d\x0a/g, "\x0a");
var output = "";
for(var n = 0; n < string.length; n++) {
var c = string.charCodeAt(n);
if(c < 128) {
output += String.fromCharCode(c);
} else if((c > 127) && (c < 2048)) {
output += String.fromCharCode((c >> 6) | 192);
output += String.fromCharCode((c & 63) | 128);
} else {
output += String.fromCharCode((c >> 12) | 224);
output += String.fromCharCode(((c >> 6) & 63) | 128);
output += String.fromCharCode((c & 63) | 128);
}
}
return output;
};
function md5(string) {
var x = Array();
var k, AA, BB, CC, DD, a, b, c, d;
var S11 = 7,
S12 = 12,
S13 = 17,
S14 = 22;
var S21 = 5,
S22 = 9,
S23 = 14,
S24 = 20;
var S31 = 4,
S32 = 11,
S33 = 16,
S34 = 23;
var S41 = 6,
S42 = 10,
S43 = 15,
S44 = 21;
string = uTF8Encode(string);
x = convertToWordArray(string);
a = 0x67452301;
b = 0xEFCDAB89;
c = 0x98BADCFE;
d = 0x10325476;
for(k = 0; k < x.length; k += 16) {
AA = a;
BB = b;
CC = c;
DD = d;
a = FF(a, b, c, d, x[k + 0], S11, 0xD76AA478);
d = FF(d, a, b, c, x[k + 1], S12, 0xE8C7B756);
c = FF(c, d, a, b, x[k + 2], S13, 0x242070DB);
b = FF(b, c, d, a, x[k + 3], S14, 0xC1BDCEEE);
a = FF(a, b, c, d, x[k + 4], S11, 0xF57C0FAF);
d = FF(d, a, b, c, x[k + 5], S12, 0x4787C62A);
c = FF(c, d, a, b, x[k + 6], S13, 0xA8304613);
b = FF(b, c, d, a, x[k + 7], S14, 0xFD469501);
a = FF(a, b, c, d, x[k + 8], S11, 0x698098D8);
d = FF(d, a, b, c, x[k + 9], S12, 0x8B44F7AF);
c = FF(c, d, a, b, x[k + 10], S13, 0xFFFF5BB1);
b = FF(b, c, d, a, x[k + 11], S14, 0x895CD7BE);
a = FF(a, b, c, d, x[k + 12], S11, 0x6B901122);
d = FF(d, a, b, c, x[k + 13], S12, 0xFD987193);
c = FF(c, d, a, b, x[k + 14], S13, 0xA679438E);
b = FF(b, c, d, a, x[k + 15], S14, 0x49B40821);
a = GG(a, b, c, d, x[k + 1], S21, 0xF61E2562);
d = GG(d, a, b, c, x[k + 6], S22, 0xC040B340);
c = GG(c, d, a, b, x[k + 11], S23, 0x265E5A51);
b = GG(b, c, d, a, x[k + 0], S24, 0xE9B6C7AA);
a = GG(a, b, c, d, x[k + 5], S21, 0xD62F105D);
d = GG(d, a, b, c, x[k + 10], S22, 0x2441453);
c = GG(c, d, a, b, x[k + 15], S23, 0xD8A1E681);
b = GG(b, c, d, a, x[k + 4], S24, 0xE7D3FBC8);
a = GG(a, b, c, d, x[k + 9], S21, 0x21E1CDE6);
d = GG(d, a, b, c, x[k + 14], S22, 0xC33707D6);
c = GG(c, d, a, b, x[k + 3], S23, 0xF4D50D87);
b = GG(b, c, d, a, x[k + 8], S24, 0x455A14ED);
a = GG(a, b, c, d, x[k + 13], S21, 0xA9E3E905);
d = GG(d, a, b, c, x[k + 2], S22, 0xFCEFA3F8);
c = GG(c, d, a, b, x[k + 7], S23, 0x676F02D9);
b = GG(b, c, d, a, x[k + 12], S24, 0x8D2A4C8A);
a = HH(a, b, c, d, x[k + 5], S31, 0xFFFA3942);
d = HH(d, a, b, c, x[k + 8], S32, 0x8771F681);
c = HH(c, d, a, b, x[k + 11], S33, 0x6D9D6122);
b = HH(b, c, d, a, x[k + 14], S34, 0xFDE5380C);
a = HH(a, b, c, d, x[k + 1], S31, 0xA4BEEA44);
d = HH(d, a, b, c, x[k + 4], S32, 0x4BDECFA9);
c = HH(c, d, a, b, x[k + 7], S33, 0xF6BB4B60);
b = HH(b, c, d, a, x[k + 10], S34, 0xBEBFBC70);
a = HH(a, b, c, d, x[k + 13], S31, 0x289B7EC6);
d = HH(d, a, b, c, x[k + 0], S32, 0xEAA127FA);
c = HH(c, d, a, b, x[k + 3], S33, 0xD4EF3085);
b = HH(b, c, d, a, x[k + 6], S34, 0x4881D05);
a = HH(a, b, c, d, x[k + 9], S31, 0xD9D4D039);
d = HH(d, a, b, c, x[k + 12], S32, 0xE6DB99E5);
c = HH(c, d, a, b, x[k + 15], S33, 0x1FA27CF8);
b = HH(b, c, d, a, x[k + 2], S34, 0xC4AC5665);
a = II(a, b, c, d, x[k + 0], S41, 0xF4292244);
d = II(d, a, b, c, x[k + 7], S42, 0x432AFF97);
c = II(c, d, a, b, x[k + 14], S43, 0xAB9423A7);
b = II(b, c, d, a, x[k + 5], S44, 0xFC93A039);
a = II(a, b, c, d, x[k + 12], S41, 0x655B59C3);
d = II(d, a, b, c, x[k + 3], S42, 0x8F0CCC92);
c = II(c, d, a, b, x[k + 10], S43, 0xFFEFF47D);
b = II(b, c, d, a, x[k + 1], S44, 0x85845DD1);
a = II(a, b, c, d, x[k + 8], S41, 0x6FA87E4F);
d = II(d, a, b, c, x[k + 15], S42, 0xFE2CE6E0);
c = II(c, d, a, b, x[k + 6], S43, 0xA3014314);
b = II(b, c, d, a, x[k + 13], S44, 0x4E0811A1);
a = II(a, b, c, d, x[k + 4], S41, 0xF7537E82);
d = II(d, a, b, c, x[k + 11], S42, 0xBD3AF235);
c = II(c, d, a, b, x[k + 2], S43, 0x2AD7D2BB);
b = II(b, c, d, a, x[k + 9], S44, 0xEB86D391);
a = addUnsigned(a, AA);
b = addUnsigned(b, BB);
c = addUnsigned(c, CC);
d = addUnsigned(d, DD);
}
var tempValue = wordToHex(a) + wordToHex(b) + wordToHex(c) + wordToHex(d);
return tempValue.toLowerCase();
}
module.exports.md5 = md5
Nach dem Login kopieren

[Verwandte Empfehlungen]

1 🎜>Besonders empfohlen: Version V0.1 der „php Programmer Toolbox“ herunterladen2.

Laden Sie den vollständigen Quellcode des WeChat-Applets herunter

3.

Demo des WeChat-Miniprogramms: Imitation Mall


Das obige ist der detaillierte Inhalt vonAusführliche Erläuterung, wie während der Miniprogrammentwicklung mehrere Domänennamen gleichzeitig auf dem Nginx-Port überwacht werden. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!