āĻ¯āĻ–āĻ¨ 'āĻ•' 'āĻ•' āĻāĻ° āĻ¸āĻŽāĻžāĻ¨ āĻ¨āĻ¯āĻŧāĨ¤ āĻāĻ•āĻŸāĻŋ āĻšā§āĻ¯āĻžāĻ• āĻāĻ° āĻĒāĻ°āĻŋāĻĒā§āĻ°ā§‡āĻ•ā§āĻˇāĻŋāĻ¤ā§‡

āĻ†āĻŽāĻžāĻ° āĻāĻ• āĻŦāĻ¨ā§āĻ§ā§āĻ° āĻ¸āĻžāĻĨā§‡ āĻ¸āĻŦāĻšā§‡āĻ¯āĻŧā§‡ āĻ…āĻĒā§āĻ°ā§€āĻ¤āĻŋāĻ•āĻ° āĻ˜āĻŸāĻ¨āĻž āĻ˜āĻŸā§‡āĻ›ā§‡āĨ¤ āĻ¤āĻŦā§‡ āĻāĻŸāĻŋ āĻŽāĻŋāĻ–āĻžāĻ‡āĻ˛ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ¯āĻ¤āĻŸāĻž āĻ…āĻĒā§āĻ°ā§€āĻ¤āĻŋāĻ•āĻ° āĻ›āĻŋāĻ˛, āĻāĻŸāĻŋ āĻ†āĻŽāĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ āĻŋāĻ• āĻ¤āĻ¤āĻŸāĻžāĻ‡ āĻŦāĻŋāĻ¨ā§‹āĻĻāĻ¨āĻŽā§‚āĻ˛āĻ• āĻ›āĻŋāĻ˛āĨ¤

āĻ†āĻŽāĻŋ āĻŦāĻ˛āĻ¤ā§‡āĻ‡ āĻšāĻŦā§‡ āĻ¯ā§‡ āĻ†āĻŽāĻžāĻ° āĻŦāĻ¨ā§āĻ§ā§ āĻŦā§‡āĻļ āĻ‡āĻ‰āĻ¨āĻŋāĻ•ā§āĻ¸-āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€: āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽāĻŸāĻŋ āĻ¨āĻŋāĻœā§‡āĻ‡ āĻ‡āĻ¨āĻ¸ā§āĻŸāĻ˛ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨ āĻŽāĻžāĻ‡āĻāĻ¸āĻ•āĻŋāĻ‰āĻāĻ˛, āĻĒāĻŋāĻāĻ‡āĻšāĻĒāĻŋ āĻāĻŦāĻ‚ āĻ¸āĻšāĻœ āĻ¸ā§‡āĻŸāĻŋāĻ‚āĻ¸ āĻ•āĻ°ā§āĻ¨ nginx.
āĻāĻŦāĻ‚ āĻ¤āĻžāĻ° āĻ¨āĻŋāĻ°ā§āĻŽāĻžāĻŖ āĻ¸āĻ°āĻžā§āĻœāĻžāĻŽā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ¨āĻŋāĻŦā§‡āĻĻāĻŋāĻ¤ āĻāĻ• āĻĄāĻœāĻ¨ āĻŦāĻž āĻĻā§‡āĻĄāĻŧāĻŸāĻŋ āĻ“āĻ¯āĻŧā§‡āĻŦāĻ¸āĻžāĻ‡āĻŸ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤

āĻšā§‡āĻ‡āĻ¨āĻ¸ā§‹āĻ° āĻœāĻ¨ā§āĻ¯ āĻ¨āĻŋāĻŦā§‡āĻĻāĻŋāĻ¤ āĻāĻ‡ āĻ¸āĻžāĻ‡āĻŸāĻ—ā§āĻ˛āĻŋāĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻāĻ•āĻŸāĻŋ āĻ¸āĻžāĻ°ā§āĻš āĻ‡āĻžā§āĻœāĻŋāĻ¨ā§‡āĻ° āĻļā§€āĻ°ā§āĻˇā§‡ āĻĻā§ƒāĻĸāĻŧāĻ­āĻžāĻŦā§‡ āĻŦāĻ¸ā§‡āĨ¤ āĻāĻ‡ āĻ¸āĻžāĻ‡āĻŸāĻŸāĻŋ āĻāĻ•āĻŸāĻŋ āĻ…-āĻŦāĻžāĻŖāĻŋāĻœā§āĻ¯āĻŋāĻ• āĻĒāĻ°ā§āĻ¯āĻžāĻ˛ā§‹āĻšāĻ•, āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻ•ā§‡āĻ‰ āĻāĻŸāĻŋāĻ•ā§‡ āĻ†āĻ•ā§āĻ°āĻŽāĻŖ āĻ•āĻ°āĻžāĻ° āĻ…āĻ­ā§āĻ¯āĻžāĻ¸ āĻ•āĻ°ā§‡ āĻĢā§‡āĻ˛ā§‡āĻ›ā§‡āĨ¤ āĻ¯ā§‡ DDoS, āĻ¤āĻžāĻ°āĻĒāĻ° āĻ¨ā§ƒāĻļāĻ‚āĻ¸ āĻŦāĻ˛, āĻ¤āĻžāĻ°āĻĒāĻ° āĻ¤āĻžāĻ°āĻž āĻ…āĻļā§āĻ˛ā§€āĻ˛ āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ āĻ˛ā§‡āĻ–ā§‡ āĻāĻŦāĻ‚ āĻšā§‹āĻ¸ā§āĻŸāĻŋāĻ‚ āĻāĻŦāĻ‚ āĻ†āĻ°āĻ•ā§‡āĻāĻ¨-āĻ•ā§‡ āĻ—āĻžāĻ˛āĻžāĻ—āĻžāĻ˛āĻŋ āĻĒāĻžāĻ āĻžāĻ¯āĻŧāĨ¤
āĻšāĻ āĻžā§Ž, āĻ¸āĻŦāĻ•āĻŋāĻ›ā§ āĻļāĻžāĻ¨ā§āĻ¤ āĻšāĻ¯āĻŧā§‡ āĻ—ā§‡āĻ˛ āĻāĻŦāĻ‚ āĻāĻ‡ āĻļāĻžāĻ¨ā§āĻ¤āĻŸāĻŋ āĻ­āĻžāĻ˛ āĻ¨āĻ¯āĻŧ āĻāĻŦāĻ‚ āĻ¸āĻžāĻ‡āĻŸāĻŸāĻŋ āĻ§ā§€āĻ°ā§‡ āĻ§ā§€āĻ°ā§‡ āĻ…āĻ¨ā§āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨ āĻĢāĻ˛āĻžāĻĢāĻ˛ā§‡āĻ° āĻļā§€āĻ°ā§āĻˇ āĻ˛āĻžāĻ‡āĻ¨āĻ—ā§āĻ˛āĻŋ āĻ›ā§‡āĻĄāĻŧā§‡ āĻ¯ā§‡āĻ¤ā§‡ āĻļā§āĻ°ā§ āĻ•āĻ°ā§‡āĨ¤

āĻ¯āĻ–āĻ¨ 'āĻ•' 'āĻ•' āĻāĻ° āĻ¸āĻŽāĻžāĻ¨ āĻ¨āĻ¯āĻŧāĨ¤ āĻāĻ•āĻŸāĻŋ āĻšā§āĻ¯āĻžāĻ• āĻāĻ° āĻĒāĻ°āĻŋāĻĒā§āĻ°ā§‡āĻ•ā§āĻˇāĻŋāĻ¤ā§‡

āĻāĻŸāĻŋ āĻāĻ•āĻŸāĻŋ āĻĒā§āĻ°āĻŦāĻžāĻĻ āĻ›āĻŋāĻ˛, āĻ¤āĻžāĻ°āĻĒāĻ° āĻ…ā§āĻ¯āĻžāĻĄāĻŽāĻŋāĻ¨ā§‡āĻ° āĻ—āĻ˛ā§āĻĒ āĻ¨āĻŋāĻœā§‡āĻ‡āĨ¤

āĻ˜ā§āĻŽā§‡āĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻ˜āĻ¨āĻŋāĻ¯āĻŧā§‡ āĻāĻ˛ āĻ¯āĻ–āĻ¨ āĻĢā§‹āĻ¨ āĻŦā§‡āĻœā§‡ āĻ‰āĻ āĻ˛: “āĻ¸āĻžāĻ¨, āĻ¤ā§āĻŽāĻŋ āĻ•āĻŋ āĻ†āĻŽāĻžāĻ° āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ°ā§‡āĻ° āĻĻāĻŋāĻ•ā§‡ āĻ¤āĻžāĻ•āĻžāĻŦā§‡ āĻ¨āĻž? āĻ†āĻŽāĻžāĻ° āĻ•āĻžāĻ›ā§‡ āĻŽāĻ¨ā§‡ āĻšāĻšā§āĻ›ā§‡ āĻ†āĻŽāĻŋ āĻšā§āĻ¯āĻžāĻ• āĻšāĻ¯āĻŧā§‡āĻ›āĻŋ, āĻ†āĻŽāĻŋ āĻāĻŸāĻŋ āĻĒā§āĻ°āĻŽāĻžāĻŖ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°āĻŋ āĻ¨āĻž, āĻ¤āĻŦā§‡ āĻ…āĻ¨ā§āĻ­ā§‚āĻ¤āĻŋāĻŸāĻŋ āĻ¤ā§ƒāĻ¤ā§€āĻ¯āĻŧ āĻ¸āĻĒā§āĻ¤āĻžāĻšā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ†āĻŽāĻžāĻ•ā§‡ āĻ›ā§‡āĻĄāĻŧā§‡ āĻ¯āĻžāĻ¯āĻŧāĻ¨āĻŋāĨ¤ āĻšāĻ¯āĻŧāĻ¤ā§‹ āĻ†āĻŽāĻžāĻ° āĻĒā§āĻ¯āĻžāĻ°āĻžāĻ¨āĻŋāĻ¯āĻŧāĻžāĻ° āĻšāĻŋāĻ•āĻŋā§ŽāĻ¸āĻž āĻ¨ā§‡āĻ“āĻ¯āĻŧāĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻāĻ¸ā§‡āĻ›ā§‡?

āĻāĻ°āĻĒāĻ° āĻ¯āĻž āĻ›āĻŋāĻ˛ āĻ†āĻ§āĻž āĻ˜āĻŖā§āĻŸāĻžāĻ° āĻ†āĻ˛ā§‹āĻšāĻ¨āĻž āĻ¯āĻž āĻ¨āĻŋāĻŽā§āĻ¨āĻ°ā§‚āĻĒ āĻ¸āĻ‚āĻ•ā§āĻˇāĻŋāĻĒā§āĻ¤ āĻ•āĻ°āĻž āĻ¯ā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡:

  • āĻšā§āĻ¯āĻžāĻ•āĻŋāĻ‚āĻ¯āĻŧā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻŽāĻžāĻŸāĻŋ āĻŦā§‡āĻļ āĻ‰āĻ°ā§āĻŦāĻ° āĻ›āĻŋāĻ˛;
  • āĻāĻ•āĻœāĻ¨ āĻ†āĻ•ā§āĻ°āĻŽāĻŖāĻ•āĻžāĻ°ā§€ āĻ¸ā§āĻĒāĻžāĻ° āĻ‡āĻ‰āĻœāĻžāĻ° āĻ…āĻ§āĻŋāĻ•āĻžāĻ° āĻ˛āĻžāĻ­ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡;
  • āĻ†āĻ•ā§āĻ°āĻŽāĻŖāĻŸāĻŋ (āĻ¯āĻĻāĻŋ āĻāĻŸāĻŋ āĻ˜āĻŸā§‡ āĻĨāĻžāĻ•ā§‡) āĻŦāĻŋāĻļā§‡āĻˇāĻ­āĻžāĻŦā§‡ āĻāĻ‡ āĻ¸āĻžāĻ‡āĻŸā§‡ āĻ˛āĻ•ā§āĻˇā§āĻ¯ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛;
  • āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻāĻ˛āĻžāĻ•āĻž āĻ¸āĻ‚āĻļā§‹āĻ§āĻ¨ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡ āĻāĻŦāĻ‚ āĻ†āĻĒāĻ¨āĻŋ āĻļā§āĻ§ā§ āĻŦā§āĻāĻ¤ā§‡ āĻšāĻŦā§‡ āĻ•ā§‹āĻ¨ āĻ…āĻ¨ā§āĻĒā§āĻ°āĻŦā§‡āĻļ āĻ›āĻŋāĻ˛ āĻ•āĻŋāĻ¨āĻž;
  • āĻšā§āĻ¯āĻžāĻ• āĻ¸āĻžāĻ‡āĻŸ āĻ•ā§‹āĻĄ āĻāĻŦāĻ‚ āĻĄāĻžāĻŸāĻžāĻŦā§‡āĻ¸ āĻĒā§āĻ°āĻ­āĻžāĻŦāĻŋāĻ¤ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡ āĻ¨āĻž.

āĻļā§‡āĻˇ āĻĒāĻ¯āĻŧā§‡āĻ¨ā§āĻŸ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡.

āĻ¯āĻ–āĻ¨ 'āĻ•' 'āĻ•' āĻāĻ° āĻ¸āĻŽāĻžāĻ¨ āĻ¨āĻ¯āĻŧāĨ¤ āĻāĻ•āĻŸāĻŋ āĻšā§āĻ¯āĻžāĻ• āĻāĻ° āĻĒāĻ°āĻŋāĻĒā§āĻ°ā§‡āĻ•ā§āĻˇāĻŋāĻ¤ā§‡

āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻ¸āĻžāĻĻāĻž āĻĢā§āĻ°āĻ¨ā§āĻŸāĻāĻ¨ā§āĻĄ āĻ†āĻ‡āĻĒāĻŋ āĻŦāĻŋāĻļā§āĻŦā§‡āĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻĻā§‡āĻ–āĻžāĻ¯āĻŧ. āĻŦā§āĻ¯āĻžāĻ•āĻāĻ¨ā§āĻĄ āĻāĻŦāĻ‚ āĻĢā§āĻ°āĻ¨ā§āĻŸāĻāĻ¨ā§āĻĄā§‡āĻ° āĻŽāĻ§ā§āĻ¯ā§‡ HTTP(āĻ—ā§āĻ˛āĻŋ) āĻ›āĻžāĻĄāĻŧāĻž āĻ•ā§‹āĻ¨ā§‹ āĻŦāĻŋāĻ¨āĻŋāĻŽāĻ¯āĻŧ āĻ¨ā§‡āĻ‡, āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€/āĻĒāĻžāĻ¸āĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻĄāĻ—ā§āĻ˛āĻŋ āĻ†āĻ˛āĻžāĻĻāĻž, āĻ•ā§‹āĻ¨ā§‹ āĻ•ā§€ āĻŦāĻŋāĻ¨āĻŋāĻŽāĻ¯āĻŧ āĻšāĻ¯āĻŧāĻ¨āĻŋā§ˇ āĻ§ā§‚āĻ¸āĻ° āĻ āĻŋāĻ•āĻžāĻ¨āĻžāĻ¯āĻŧ, 80/443 āĻ›āĻžāĻĄāĻŧāĻž āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻĒā§‹āĻ°ā§āĻŸ āĻŦāĻ¨ā§āĻ§āĨ¤ āĻšā§‹āĻ¯āĻŧāĻžāĻ‡āĻŸ āĻŦā§āĻ¯āĻžāĻ•āĻāĻ¨ā§āĻĄ āĻ†āĻ‡āĻĒāĻŋ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻĻā§āĻ‡āĻœāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€āĻ° āĻ•āĻžāĻ›ā§‡ āĻĒāĻ°āĻŋāĻšāĻŋāĻ¤, āĻ¯āĻžāĻĻā§‡āĻ° āĻŽāĻŋāĻ–āĻžāĻ‡āĻ˛ āĻ¸āĻŽā§āĻĒā§‚āĻ°ā§āĻŖāĻ­āĻžāĻŦā§‡ āĻŦāĻŋāĻļā§āĻŦāĻžāĻ¸ āĻ•āĻ°ā§‡āĨ¤

āĻĢā§āĻ°āĻ¨ā§āĻŸāĻāĻ¨ā§āĻĄā§‡ āĻ‡āĻ¨āĻ¸ā§āĻŸāĻ˛ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡ āĻĄā§‡āĻŦāĻŋāĻ¯āĻŧāĻžāĻ¨ 9 āĻāĻŦāĻ‚ āĻ•āĻ˛ āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ, āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽāĻŸāĻŋ āĻāĻ•āĻŸāĻŋ āĻŦāĻšāĻŋāĻ°āĻžāĻ—āĻ¤ āĻĢāĻžāĻ¯āĻŧāĻžāĻ°āĻ“āĻ¯āĻŧāĻžāĻ˛ āĻĻā§āĻŦāĻžāĻ°āĻž āĻĒā§ƒāĻĨāĻŋāĻŦā§€ āĻĨā§‡āĻ•ā§‡ āĻŦāĻŋāĻšā§āĻ›āĻŋāĻ¨ā§āĻ¨ āĻšāĻ¯āĻŧā§‡ āĻ¯āĻžāĻ¯āĻŧ āĻāĻŦāĻ‚ āĻŦāĻ¨ā§āĻ§ āĻšāĻ¯āĻŧā§‡ āĻ¯āĻžāĻ¯āĻŧāĨ¤

"āĻ āĻŋāĻ• āĻ†āĻ›ā§‡, āĻ†āĻŽāĻžāĻ•ā§‡ āĻ…ā§āĻ¯āĻžāĻ•ā§āĻ¸ā§‡āĻ¸ āĻĻāĻŋāĻ¨," āĻ†āĻŽāĻŋ āĻāĻ• āĻ˜āĻ¨ā§āĻŸāĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ˜ā§āĻŽ āĻŦāĻ¨ā§āĻ§ āĻ•āĻ°āĻžāĻ° āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ āĻ¨āĻŋāĻ¯āĻŧā§‡āĻ›āĻŋāĨ¤ "āĻ†āĻŽāĻŋ āĻ¨āĻŋāĻœā§‡āĻ° āĻšā§‹āĻ–ā§‡ āĻĻā§‡āĻ–āĻŦāĨ¤"

āĻāĻ–āĻžāĻ¨ā§‡ āĻāĻŦāĻ‚ āĻ†āĻ°āĻ“:

$ grep -F PRETTY_NAME /etc/*releas*
PRETTY_NAME="Debian GNU/Linux 9 (stretch)"
$ `echo $SHELL` --version
GNU bash, version 4.4.12(1)-release (x86_64-pc-linux-gnu)
$ nginx -v
nginx version: nginx/1.10.3
$ gdb --version
GNU gdb (Debian 8.2.1-2) 8.2.1

āĻāĻ•āĻŸāĻŋ āĻ¸āĻŽā§āĻ­āĻžāĻŦā§āĻ¯ āĻšā§āĻ¯āĻžāĻ• āĻ–ā§āĻāĻœāĻ›ā§‡āĻ¨

āĻ†āĻŽāĻŋ āĻĒā§āĻ°āĻĨāĻŽā§‡ āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ° āĻļā§āĻ°ā§ āĻ•āĻ°āĻŋ āĻ‰āĻĻā§āĻ§āĻžāĻ°-āĻŽā§‹āĻĄ. āĻ†āĻŽāĻŋ āĻĄāĻŋāĻ¸ā§āĻ• āĻŽāĻžāĻ‰āĻ¨ā§āĻŸ āĻāĻŦāĻ‚ āĻ¤āĻžāĻĻā§‡āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻ‰āĻ˛ā§āĻŸāĻžāĻ¨ā§‹ āĻĒā§āĻ°āĻŽāĻžāĻŖ-āĻ˛āĻ—, āĻ‡āĻ¤āĻŋāĻšāĻžāĻ¸, āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻ˛āĻ—, āĻ‡āĻ¤ā§āĻ¯āĻžāĻĻāĻŋ, āĻ¯āĻĻāĻŋ āĻ¸āĻŽā§āĻ­āĻŦ āĻšāĻ¯āĻŧ, āĻ†āĻŽāĻŋ āĻĢāĻžāĻ‡āĻ˛ āĻ¤ā§ˆāĻ°āĻŋāĻ° āĻ¤āĻžāĻ°āĻŋāĻ–āĻ—ā§āĻ˛āĻŋ āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻž āĻ•āĻ°āĻŋ, āĻ¯āĻĻāĻŋāĻ“ āĻ†āĻŽāĻŋ āĻŦā§āĻāĻ¤ā§‡ āĻĒāĻžāĻ°āĻŋ āĻ¯ā§‡ āĻāĻ•āĻŸāĻŋ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻ•ā§āĻ°ā§āĻ¯āĻžāĻ•āĻžāĻ° āĻ¨āĻŋāĻœā§‡āĻ° āĻĒāĻ°ā§‡ "āĻ‰āĻ ā§‡ āĻ‰āĻ āĻ¤" āĻāĻŦāĻ‚ āĻŽāĻŋāĻļāĻž āĻ‡āĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§‡āĻ‡ āĻ¨āĻŋāĻœā§‡āĻ•ā§‡ āĻ–ā§āĻāĻœāĻ¤ā§‡ āĻ—āĻŋāĻ¯āĻŧā§‡ āĻ…āĻ¨ā§‡āĻ• "āĻĒāĻžāĻ¯āĻŧā§‡ āĻĒāĻĄāĻŧā§‡" .

āĻ†āĻŽāĻŋ āĻ¸ā§āĻŦāĻžāĻ­āĻžāĻŦāĻŋāĻ• āĻŽā§‹āĻĄā§‡ āĻļā§āĻ°ā§ āĻ•āĻ°āĻŋ, āĻāĻ–āĻ¨āĻ“ āĻŦā§āĻāĻ¤ā§‡ āĻĒāĻžāĻ°āĻ›āĻŋ āĻ¨āĻž āĻ•ā§€ āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡, āĻ†āĻŽāĻŋ āĻ•āĻ¨āĻĢāĻŋāĻ—āĻžāĻ°āĻ—ā§āĻ˛āĻŋ āĻ…āĻ§ā§āĻ¯āĻ¯āĻŧāĻ¨ āĻ•āĻ°āĻŋāĨ¤ āĻĒā§āĻ°āĻĨāĻŽāĻ¤, āĻ†āĻŽāĻŋ āĻ†āĻ—ā§āĻ°āĻšā§€ nginx āĻ¯ā§‡āĻšā§‡āĻ¤ā§, āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ­āĻžāĻŦā§‡, āĻāĻŸāĻŋ āĻ›āĻžāĻĄāĻŧāĻž āĻĢā§āĻ°āĻ¨ā§āĻŸāĻāĻ¨ā§āĻĄā§‡ āĻ†āĻ° āĻ•āĻŋāĻ›ā§āĻ‡ āĻ¨ā§‡āĻ‡āĨ¤
āĻ•āĻ¨āĻĢāĻŋāĻ—āĻžāĻ°āĻ—ā§āĻ˛āĻŋ āĻ›ā§‹āĻŸ, āĻāĻ• āĻĄāĻœāĻ¨ āĻĢāĻžāĻ‡āĻ˛ā§‡āĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻ¸ā§āĻ—āĻ āĻŋāĻ¤, āĻ†āĻŽāĻŋ āĻ•ā§‡āĻŦāĻ˛ āĻ¸ā§‡āĻ—ā§āĻ˛āĻŋ āĻĻā§‡āĻ–ā§‡āĻ›āĻŋ āĻŦāĻŋāĻĄāĻŧāĻžāĻ˛āĻ“āĻš āĻāĻ• āĻāĻ• āĻ•āĻ°ā§‡ āĻ¸āĻŦāĻ•āĻŋāĻ›ā§ āĻĒāĻ°āĻŋāĻˇā§āĻ•āĻžāĻ° āĻŦāĻ˛ā§‡ āĻŽāĻ¨ā§‡ āĻšāĻšā§āĻ›ā§‡, āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻ†āĻĒāĻ¨āĻŋ āĻ•āĻ–āĻ¨āĻ‡ āĻœāĻžāĻ¨ā§‡āĻ¨ āĻ¨āĻž āĻ¯ā§‡ āĻ†āĻŽāĻŋ āĻ•āĻŋāĻ›ā§ āĻŽāĻŋāĻ¸ āĻ•āĻ°ā§‡āĻ›āĻŋ āĻ•āĻŋāĻ¨āĻž āĻ…āĻ¨ā§āĻ¤āĻ°ā§āĻ­ā§āĻ•ā§āĻ¤ āĻ•āĻ°āĻž, āĻ†āĻŽāĻžāĻ•ā§‡ āĻāĻ•āĻŸāĻŋ āĻ¸āĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āĻ¤āĻžāĻ˛āĻŋāĻ•āĻž āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻ¤ā§‡ āĻĻāĻŋāĻ¨:

$ nginx -T
nginx: the configuration file /usr/local/etc/nginx/nginx.conf syntax is ok
nginx: configuration file /usr/local/etc/nginx/nginx.conf test is successful

āĻ†āĻŽāĻŋ āĻŦā§āĻāĻ¤ā§‡ āĻĒāĻžāĻ°āĻŋāĻ¨āĻŋ: "āĻ¤āĻžāĻ˛āĻŋāĻ•āĻžāĻŸāĻŋ āĻ•ā§‹āĻĨāĻžāĻ¯āĻŧ?"

$ nginx -V
nginx version: nginx/1.10.3
TLS SNI support enabled
configure arguments: --with-cc-opt='-g -O2' --with-ld-opt='-Wl,-z,relro -Wl,-z,now' --prefix=/usr/share/nginx --conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --lock-path=/var/lock/nginx.lock --pid-path=/run/nginx.pid --modules-path=/usr/lib/nginx/modules --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --with-debug --with-pcre-jit --with-ipv6 --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-http_auth_request_module --with-http_v2_module --with-http_dav_module --with-http_slice_module --with-threads --with-http_addition_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_sub_module --with-stream=dynamic --with-stream_ssl_module --with-mail=dynamic --with-mail_ssl_module

āĻ¤āĻžāĻ˛āĻŋāĻ•āĻžāĻ° āĻĒā§āĻ°āĻļā§āĻ¨ā§‡ āĻāĻ•āĻŸāĻŋ āĻĻā§āĻŦāĻŋāĻ¤ā§€āĻ¯āĻŧ āĻĒā§āĻ°āĻļā§āĻ¨ āĻ¯ā§‹āĻ— āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡: "āĻ•ā§‡āĻ¨ āĻāĻ¨āĻœāĻŋāĻ¨ā§‡āĻ•ā§āĻ¸ā§‡āĻ° āĻāĻŽāĻ¨ āĻāĻ•āĻŸāĻŋ āĻĒā§āĻ°āĻžāĻšā§€āĻ¨ āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖ?"

āĻ‰āĻĒāĻ°āĻ¨ā§āĻ¤ā§, āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻŦāĻŋāĻļā§āĻŦāĻžāĻ¸ āĻ•āĻ°ā§‡ āĻ¯ā§‡ āĻ¸āĻ°ā§āĻŦāĻļā§‡āĻˇ āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖ āĻ‡āĻ¨āĻ¸ā§āĻŸāĻ˛ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡:

$ dpkg -l nginx | grep "[n]ginx"
ii  nginx          1.14.2-2+deb10u1 all          small, powerful, scalable web/proxy server

āĻ†āĻŽāĻŋ āĻĢā§‹āĻ¨ āĻĻāĻŋāĻšā§āĻ›āĻŋ:
- āĻŽāĻŋāĻļāĻž, āĻ¤ā§āĻŽāĻŋ āĻ†āĻŦāĻžāĻ° āĻœāĻĄāĻŧā§‹ āĻšāĻ˛ā§‡ āĻ•ā§‡āĻ¨? nginx?
- āĻĻāĻžāĻāĻĄāĻŧāĻžāĻ“, āĻ†āĻŽāĻŋ āĻāĻŸāĻž āĻ•āĻŋāĻ­āĻžāĻŦā§‡ āĻ•āĻ°āĻ¤ā§‡ āĻœāĻžāĻ¨āĻŋ āĻ¨āĻž!
-āĻ†āĻšā§āĻ›āĻž āĻ˜ā§āĻŽāĻžāĻ“...

nginx āĻāĻŸāĻŋ āĻĒāĻ°āĻŋāĻˇā§āĻ•āĻžāĻ°āĻ­āĻžāĻŦā§‡ āĻĒā§āĻ¨āĻ°ā§āĻ¨āĻŋāĻ°ā§āĻŽāĻžāĻŖ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡ āĻāĻŦāĻ‚ "-T" āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻ¤āĻžāĻ˛āĻŋāĻ•āĻžāĻ° āĻ†āĻ‰āĻŸāĻĒā§āĻŸ āĻāĻ•āĻŸāĻŋ āĻ•āĻžāĻ°āĻŖā§‡ āĻ˛ā§āĻ•āĻžāĻ¨ā§‹ āĻ†āĻ›ā§‡āĨ¤ āĻšā§āĻ¯āĻžāĻ•āĻŋāĻ‚ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻ†āĻ° āĻ•ā§‹āĻ¨ āĻ¸āĻ¨ā§āĻĻā§‡āĻš āĻ¨ā§‡āĻ‡ āĻāĻŦāĻ‚ āĻ†āĻĒāĻ¨āĻŋ āĻāĻŸāĻŋāĻ•ā§‡ āĻ¸āĻšāĻœāĻ­āĻžāĻŦā§‡ āĻ—ā§āĻ°āĻšāĻŖ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨ āĻāĻŦāĻ‚ (āĻ¯ā§‡āĻšā§‡āĻ¤ā§ āĻŽāĻŋāĻļāĻž āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ°āĻŸāĻŋ āĻāĻ•āĻŸāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻĻāĻŋāĻ¯āĻŧā§‡ āĻĒā§āĻ°āĻ¤āĻŋāĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻ•āĻ°ā§‡āĻ›ā§‡āĻ¨) āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĻŸāĻŋ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ā§‡āĻ° āĻŦāĻŋāĻˇāĻ¯āĻŧāĻŸāĻŋ āĻŦāĻŋāĻŦā§‡āĻšāĻ¨āĻž āĻ•āĻ°ā§āĻ¨āĨ¤

āĻāĻŦāĻ‚ āĻĒā§āĻ°āĻ•ā§ƒāĻ¤āĻĒāĻ•ā§āĻˇā§‡, āĻ¯ā§‡āĻšā§‡āĻ¤ā§ āĻ•ā§‡āĻ‰ āĻ…āĻ§āĻŋāĻ•āĻžāĻ° āĻĒā§‡āĻ¯āĻŧā§‡āĻ›ā§‡ āĻļāĻŋāĻ•āĻĄāĻŧ'āĻ†āĻš, āĻ¤āĻžāĻšāĻ˛ā§‡ āĻāĻŸāĻž āĻ•āĻ°āĻžāĻ‡ āĻŦā§‹āĻ§āĻ—āĻŽā§āĻ¯ āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ āĻ‡āĻ¨āĻ¸ā§āĻŸāĻ˛ āĻ•āĻ°āĻž, āĻāĻŦāĻ‚ āĻ¸ā§‡āĻ–āĻžāĻ¨ā§‡ āĻ•ā§€ āĻ­ā§āĻ˛ āĻ›āĻŋāĻ˛ āĻ¤āĻž āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨ āĻ•āĻ°āĻž āĻ…āĻ•ā§‡āĻœā§‹ āĻ›āĻŋāĻ˛, āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻāĻ‡āĻŦāĻžāĻ° āĻ•ā§ŒāĻ¤ā§‚āĻšāĻ˛ āĻ˜ā§āĻŽāĻ•ā§‡ āĻĒāĻ°āĻžāĻœāĻŋāĻ¤ āĻ•āĻ°ā§‡āĻ›āĻŋāĻ˛āĨ¤ āĻ¤āĻžāĻ°āĻž āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ•āĻžāĻ› āĻĨā§‡āĻ•ā§‡ āĻ•ā§€ āĻ˛ā§āĻ•āĻžāĻ¤ā§‡ āĻšā§‡āĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛ āĻ¤āĻž āĻ†āĻŽāĻ°āĻž āĻ•ā§€āĻ­āĻžāĻŦā§‡ āĻ–ā§āĻāĻœā§‡ āĻĒāĻžāĻŦ?

āĻ†āĻ¸ā§āĻ¨ āĻŸā§āĻ°ā§‡āĻ¸ āĻ•āĻ°āĻžāĻ° āĻšā§‡āĻˇā§āĻŸāĻž āĻ•āĻ°āĻŋ:

$ strace nginx -T

āĻ†āĻŽāĻ°āĻž āĻāĻŸāĻŋāĻ° āĻĻāĻŋāĻ•ā§‡ āĻ¤āĻžāĻ•āĻžāĻ‡, āĻāĻ•āĻŸāĻŋ āĻ˛āĻž āĻŸā§āĻ°ā§‡āĻ¸ā§‡ āĻ¸ā§āĻĒāĻˇā§āĻŸāĻ¤āĻ‡ āĻ¯āĻĨā§‡āĻˇā§āĻŸ āĻ˛āĻžāĻ‡āĻ¨ āĻ¨ā§‡āĻ‡

write(1, "/etc/nginx/nginx.conf", 21/etc/nginx/nginx.conf)   = 21
write(1, "...
write(1, "n", 1

āĻļā§āĻ§ā§ āĻŽāĻœāĻž āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯, āĻ†āĻ¸ā§āĻ¨ āĻĢāĻ˛āĻžāĻĢāĻ˛āĻ—ā§āĻ˛āĻŋ āĻ¤ā§āĻ˛āĻ¨āĻž āĻ•āĻ°āĻŋāĨ¤

$ strace nginx -T 2>&1 | wc -l
264
$ strace nginx -t 2>&1 | wc -l
264

āĻ†āĻŽāĻŋ āĻŽāĻ¨ā§‡ āĻ•āĻ°āĻŋ āĻ•ā§‹āĻĄ āĻ…āĻ‚āĻļ /src/core/nginx.c

            case 't':
                ngx_test_config = 1;
                break;

            case 'T':
                ngx_test_config = 1;
                ngx_dump_config = 1;
                break;

āĻĢāĻ°ā§āĻŽā§‡ āĻ†āĻ¨āĻž āĻšāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛:

            case 't':
                ngx_test_config = 1;
                break;

            case 'T':
                ngx_test_config = 1;
                //ngx_dump_config = 1;
                break;

āĻŦāĻž

            case 't':
                ngx_test_config = 1;
                break;

            case 'T':
                ngx_test_config = 1;
                ngx_dump_config = 0;
                break;

āĻ¤āĻžāĻ‡ "-T" āĻĻā§āĻŦāĻžāĻ°āĻž āĻ¤āĻžāĻ˛āĻŋāĻ•āĻž āĻĒā§āĻ°āĻĻāĻ°ā§āĻļāĻ¨ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ āĻ¨āĻžāĨ¤

āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻ•āĻŋāĻ­āĻžāĻŦā§‡ āĻ†āĻŽāĻ°āĻž āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ•āĻ¨āĻĢāĻŋāĻ—āĻžāĻ°ā§‡āĻļāĻ¨ āĻĻā§‡āĻ–āĻ¤ā§‡ āĻĒāĻžāĻ°āĻŋ?

āĻ¯āĻĻāĻŋ āĻ†āĻŽāĻžāĻ° āĻšāĻŋāĻ¨ā§āĻ¤āĻž āĻ¸āĻ āĻŋāĻ• āĻšāĻ¯āĻŧ āĻāĻŦāĻ‚ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨āĻļā§€āĻ˛ ngx_dump_config āĻ†āĻ¸ā§āĻ¨ āĻāĻŸāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻ‡āĻ¨āĻ¸ā§āĻŸāĻ˛ āĻ•āĻ°āĻžāĻ° āĻšā§‡āĻˇā§āĻŸāĻž āĻ•āĻ°āĻŋ āĻœāĻŋāĻĄāĻŋāĻŦāĻŋ, āĻ­āĻžāĻ—ā§āĻ¯āĻ•ā§āĻ°āĻŽā§‡ āĻāĻ•āĻŸāĻŋ āĻšāĻžāĻŦāĻŋ āĻ†āĻ›ā§‡ --with-cc-opt -g āĻŦāĻ°ā§āĻ¤āĻŽāĻžāĻ¨ āĻāĻŦāĻ‚ āĻ¯ā§‡ āĻ…āĻĒā§āĻŸāĻŋāĻŽāĻžāĻ‡āĻœā§‡āĻļāĻžāĻ¨ āĻ†āĻļāĻž āĻ•āĻ°āĻŋ -āĻ“2 āĻāĻŸāĻž āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ•ā§āĻˇāĻ¤āĻŋ āĻ•āĻ°āĻŦā§‡ āĻ¨āĻžāĨ¤ āĻāĻ•āĻ‡ āĻ¸āĻŽāĻ¯āĻŧā§‡, āĻ¯ā§‡āĻšā§‡āĻ¤ā§ āĻ†āĻŽāĻŋ āĻœāĻžāĻ¨āĻŋ āĻ¨āĻž āĻ•āĻŋāĻ­āĻžāĻŦā§‡ ngx_dump_config āĻŽāĻ§ā§āĻ¯ā§‡ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻ•āĻ°āĻž āĻ¯ā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡ āĻ•ā§‡āĻ¸ 'āĻŸāĻŋ':, āĻ†āĻŽāĻ°āĻž āĻāĻ‡ āĻŦā§āĻ˛āĻ•āĻŸāĻŋāĻ•ā§‡ āĻ•āĻ˛ āĻ•āĻ°āĻŦ āĻ¨āĻž, āĻ¤āĻŦā§‡ āĻāĻŸāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻ‡āĻ¨āĻ¸ā§āĻŸāĻ˛ āĻ•āĻ°āĻŦ āĻ•ā§‡āĻ¸ 'āĻŸāĻŋ':

āĻ•ā§‡āĻ¨ āĻ†āĻĒāĻ¨āĻŋ '-t' āĻāĻ° āĻĒāĻžāĻļāĻžāĻĒāĻžāĻļāĻŋ '-T' āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨āĻŦā§āĻ˛āĻ• āĻĒā§āĻ°āĻ¸ā§‡āĻ¸āĻŋāĻ‚ āĻ¯āĻĻāĻŋ (ngx_dump_config) āĻ­āĻŋāĻ¤āĻ°ā§‡ āĻ˜āĻŸā§‡ āĻ¯āĻĻāĻŋ (ngx_test_config):

    if (ngx_test_config) {
        if (!ngx_quiet_mode) {
            ngx_log_stderr(0, "configuration file %s test is successful",
                           cycle->conf_file.data);
        }

        if (ngx_dump_config) {
            cd = cycle->config_dump.elts;

            for (i = 0; i < cycle->config_dump.nelts; i++) {

                ngx_write_stdout("# configuration file ");
                (void) ngx_write_fd(ngx_stdout, cd[i].name.data,
                                    cd[i].name.len);
                ngx_write_stdout(":" NGX_LINEFEED);

                b = cd[i].buffer;

                (void) ngx_write_fd(ngx_stdout, b->pos, b->last - b->pos);
                ngx_write_stdout(NGX_LINEFEED);
            }
        }

        return 0;
    }

āĻ…āĻŦāĻļā§āĻ¯āĻ‡, āĻ¯āĻĻāĻŋ āĻāĻ‡ āĻ…āĻ‚āĻļā§‡ āĻ•ā§‹āĻĄ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ āĻāĻŦāĻ‚ āĻ¨āĻž āĻšāĻ¯āĻŧ āĻ•ā§‡āĻ¸ 'āĻŸāĻŋ':, āĻ¤āĻžāĻšāĻ˛ā§‡ āĻ†āĻŽāĻžāĻ° āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻ•āĻžāĻœ āĻ•āĻ°āĻŦā§‡ āĻ¨āĻžāĨ¤

nginx.conf āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻž āĻ•āĻ°ā§āĻ¨āĻ‡āĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§‡ āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻžāĻŽā§‚āĻ˛āĻ•āĻ­āĻžāĻŦā§‡ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĻŸāĻŋ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻ•āĻ°āĻžāĻ° āĻĒāĻ°ā§‡, āĻāĻŸāĻŋ āĻĒā§āĻ°āĻ¤āĻŋāĻˇā§āĻ āĻŋāĻ¤ āĻšāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛ āĻ¯ā§‡ āĻŽā§āĻ¯āĻžāĻ˛āĻ“āĻ¯āĻŧā§āĻ¯āĻžāĻ°āĻŸāĻŋ āĻ•āĻžāĻœ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻ¨ā§āĻ¯ā§‚āĻ¨āĻ¤āĻŽ āĻ•āĻ¨āĻĢāĻŋāĻ—āĻžāĻ°ā§‡āĻļāĻ¨ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ nginx āĻĒā§āĻ°āĻ•āĻžāĻ°:

events {
}

http {
	include /etc/nginx/sites-enabled/*;
}

āĻ†āĻŽāĻ°āĻž āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ā§‡ āĻ¸āĻ‚āĻ•ā§āĻˇāĻŋāĻĒā§āĻ¤āĻ¤āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻŸāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻŦāĨ¤

āĻĄāĻŋāĻŦāĻžāĻ—āĻžāĻ° āĻšāĻžāĻ˛ā§ āĻ•āĻ°ā§āĻ¨

$ gdb --silent --args nginx -t
Reading symbols from nginx...done.
(gdb) break main
Breakpoint 1 at 0x1f390: file src/core/nginx.c, line 188.
(gdb) run
Starting program: nginx -t
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".

Breakpoint 1, main (argc=2, argv=0x7fffffffebc8) at src/core/nginx.c:188
188     src/core/nginx.c: No such file or directory.
(gdb) print ngx_dump_config=1
$1 = 1
(gdb) continue
Continuing.
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
# configuration file /etc/nginx/nginx.conf:
events {
}

http {
map $http_user_agent $sign_user_agent
{
"~*yandex.com/bots" 1;
"~*www.google.com/bot.html" 1;
default 0;
}

map $uri $sign_uri
{
"~*/wp-" 1;
default 0;
}

map Đž:$sign_user_agent:$sign_uri $sign_o
{
Đž:1:0 o;
default Đž;
}

map Đ°:$sign_user_agent:$sign_uri $sign_a
{
Đ°:1:0 a;
default Đ°;
}

sub_filter_once off;
sub_filter 'Đž' $sign_o;
sub_filter 'Đ°' $sign_a;

        include /etc/nginx/sites-enabled/*;
}
# configuration file /etc/nginx/sites-enabled/default:

[Inferior 1 (process 32581) exited normally]
(gdb) quit

āĻĒāĻĻāĻ•ā§āĻˇā§‡āĻĒāĻ—ā§āĻ˛āĻŋ:

  • āĻĢāĻžāĻ‚āĻļāĻ¨ā§‡ āĻāĻ•āĻŸāĻŋ āĻŦā§āĻ°ā§‡āĻ•āĻĒāĻ¯āĻŧā§‡āĻ¨ā§āĻŸ āĻ¸ā§‡āĻŸ āĻ•āĻ°ā§āĻ¨ āĻĒā§āĻ°āĻ§āĻžāĻ¨ ()
  • āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽ āĻšāĻžāĻ˛āĻžāĻ¨
  • āĻ­ā§‡āĻ°āĻŋāĻ¯āĻŧā§‡āĻŦāĻ˛ā§‡āĻ° āĻŽāĻžāĻ¨ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻ•āĻ°ā§āĻ¨ āĻ¯āĻž āĻ•āĻ¨āĻĢāĻŋāĻ—āĻžāĻ°ā§‡āĻ° āĻ†āĻ‰āĻŸāĻĒā§āĻŸ āĻ¨āĻŋāĻ°ā§āĻ§āĻžāĻ°āĻŖ āĻ•āĻ°ā§‡ ngx_dump_config=1
  • āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽ āĻšāĻžāĻ˛āĻŋāĻ¯āĻŧā§‡ āĻ¯āĻžāĻ¨/āĻļā§‡āĻˇ āĻ•āĻ°ā§āĻ¨

āĻ†āĻŽāĻ°āĻž āĻĻā§‡āĻ–āĻ¤ā§‡ āĻĒāĻžāĻšā§āĻ›āĻŋ, āĻ†āĻ¸āĻ˛ āĻ•āĻ¨āĻĢāĻŋāĻ—āĻžāĻ°ā§‡āĻļāĻ¨ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻĨā§‡āĻ•ā§‡ āĻ†āĻ˛āĻžāĻĻāĻž, āĻ†āĻŽāĻ°āĻž āĻāĻŸāĻŋ āĻĨā§‡āĻ•ā§‡ āĻāĻ•āĻŸāĻŋ āĻĒāĻ°āĻœā§€āĻŦā§€ āĻ…āĻ‚āĻļ āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻšāĻ¨ āĻ•āĻ°āĻŋ:

map $http_user_agent $sign_user_agent
{
"~*yandex.com/bots" 1;
"~*www.google.com/bot.html" 1;
default 0;
}

map $uri $sign_uri
{
"~*/wp-" 1;
default 0;
}

map Đž:$sign_user_agent:$sign_uri $sign_o
{
Đž:1:0 o;
default Đž;
}

map Đ°:$sign_user_agent:$sign_uri $sign_a
{
Đ°:1:0 a;
default Đ°;
}

sub_filter_once off;
sub_filter 'Đž' $sign_o;
sub_filter 'Đ°' $sign_a;

āĻāĻ° āĻ•ā§āĻ°āĻŽāĻžāĻ¨ā§āĻ¸āĻžāĻ°ā§‡ āĻāĻ–āĻžāĻ¨ā§‡ āĻ•āĻŋ āĻ˜āĻŸāĻ›ā§‡ āĻ¤āĻž āĻāĻ•āĻŦāĻžāĻ° āĻĻā§‡āĻ–ā§‡ āĻ¨ā§‡āĻ“āĻ¯āĻŧāĻž āĻ¯āĻžāĻ•.

āĻ¨āĻŋāĻ°ā§āĻ§āĻžāĻ°āĻŋāĻ¤ āĻšāĻ¯āĻŧ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻŋāĻ• āĻĻā§‚āĻ¤āĻāĻ° yandex/google:

map $http_user_agent $sign_user_agent
{
"~*yandex.com/bots" 1;
"~*www.google.com/bot.html" 1;
default 0;
}

āĻĒāĻ°āĻŋāĻˇā§‡āĻŦāĻž āĻĒā§ƒāĻˇā§āĻ āĻžāĻ—ā§āĻ˛āĻŋ āĻŦāĻžāĻĻ āĻĻā§‡āĻ“āĻ¯āĻŧāĻž āĻšāĻ¯āĻŧ āĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻĄāĻĒā§āĻ°ā§‡āĻ¸:

map $uri $sign_uri
{
"~*/wp-" 1;
default 0;
}

āĻāĻŦāĻ‚ āĻ¯āĻžāĻ°āĻž āĻ‰āĻĒāĻ°ā§‡āĻ° āĻ‰āĻ­āĻ¯āĻŧ āĻļāĻ°ā§āĻ¤ā§‡āĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻĒāĻĄāĻŧā§‡ āĻ¤āĻžāĻĻā§‡āĻ° āĻœāĻ¨ā§āĻ¯

map Đž:$sign_user_agent:$sign_uri $sign_o
{
Đž:1:0 o;
default Đž;
}

map Đ°:$sign_user_agent:$sign_uri $sign_a
{
Đ°:1:0 a;
default Đ°;
}

āĻ˛ā§‡āĻ–āĻžāĻ° āĻ­āĻŋāĻ¤āĻ° āĻāĻ‡āĻšāĻŸāĻŋāĻāĻŽāĻāĻ˛- āĻĒā§ƒāĻˇā§āĻ āĻž āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ 'āĻ“' āĻ‰āĻĒāĻ° 'āĻ“' и 'āĻ•' āĻ‰āĻĒāĻ° 'āĻ•':

sub_filter_once off;
sub_filter 'Đž' $sign_o;
sub_filter 'Đ°' $sign_a;

āĻāĻŸāĻž āĻ āĻŋāĻ•, āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻ¸ā§‚āĻ•ā§āĻˇā§āĻŽāĻ¤āĻž āĻ¯ā§‡ 'a'!= 'a' āĻ āĻŋāĻ• āĻ¯ā§‡āĻŽāĻ¨ 'āĻ“'!= 'āĻ“':

āĻ¯āĻ–āĻ¨ 'āĻ•' 'āĻ•' āĻāĻ° āĻ¸āĻŽāĻžāĻ¨ āĻ¨āĻ¯āĻŧāĨ¤ āĻāĻ•āĻŸāĻŋ āĻšā§āĻ¯āĻžāĻ• āĻāĻ° āĻĒāĻ°āĻŋāĻĒā§āĻ°ā§‡āĻ•ā§āĻˇāĻŋāĻ¤ā§‡

āĻāĻ‡āĻ­āĻžāĻŦā§‡, āĻ¸āĻžāĻ°ā§āĻš āĻ‡āĻžā§āĻœāĻŋāĻ¨ āĻŦāĻŸāĻ—ā§āĻ˛āĻŋ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ 100% āĻ¸āĻŋāĻ°āĻŋāĻ˛āĻŋāĻ• āĻĒāĻžāĻ ā§āĻ¯ā§‡āĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤ā§‡, āĻ˛ā§āĻ¯āĻžāĻŸāĻŋāĻ¨ āĻĻāĻŋāĻ¯āĻŧā§‡ āĻŽāĻŋāĻļā§āĻ°āĻŋāĻ¤ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻŋāĻ¤ āĻ†āĻŦāĻ°ā§āĻœāĻ¨āĻž āĻĒāĻžāĻ¯āĻŧ 'āĻ•' и 'āĻ“'. āĻāĻŸāĻŋ āĻ•ā§€āĻ­āĻžāĻŦā§‡ āĻāĻ¸āĻ‡āĻ“āĻ•ā§‡ āĻĒā§āĻ°āĻ­āĻžāĻŦāĻŋāĻ¤ āĻ•āĻ°ā§‡ āĻ¤āĻž āĻ¨āĻŋāĻ¯āĻŧā§‡ āĻ†āĻŽāĻŋ āĻ†āĻ˛ā§‹āĻšāĻ¨āĻž āĻ•āĻ°āĻžāĻ° āĻ¸āĻžāĻšāĻ¸ āĻ•āĻ°āĻŋ āĻ¨āĻž, āĻ¤āĻŦā§‡ āĻāĻŸāĻŋ āĻ…āĻ¸āĻŽā§āĻ­āĻžāĻŦā§āĻ¯ āĻ¯ā§‡ āĻāĻ‡ āĻ§āĻ°āĻ¨ā§‡āĻ° āĻ…āĻ•ā§āĻˇāĻ°āĻ—ā§āĻ˛āĻŋ āĻ…āĻ¨ā§āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨ āĻĢāĻ˛āĻžāĻĢāĻ˛ā§‡āĻ° āĻ…āĻŦāĻ¸ā§āĻĨāĻžāĻ¨āĻ—ā§āĻ˛āĻŋāĻ¤ā§‡ āĻ‡āĻ¤āĻŋāĻŦāĻžāĻšāĻ• āĻĒā§āĻ°āĻ­āĻžāĻŦ āĻĢā§‡āĻ˛āĻŦā§‡āĨ¤

āĻ†āĻŽāĻŋ āĻ•āĻŋ āĻŦāĻ˛āĻ¤ā§‡ āĻĒāĻžāĻ°āĻŋ, āĻ•āĻ˛ā§āĻĒāĻ¨āĻž āĻ¸āĻ™ā§āĻ—ā§‡ āĻŦāĻ˛āĻ›āĻŋ.

āĻ°ā§‡āĻĢāĻžāĻ°ā§‡āĻ¨ā§āĻ¸

GDB āĻĻāĻŋāĻ¯āĻŧā§‡ āĻĄāĻŋāĻŦāĻžāĻ—āĻŋāĻ‚
gdb(1) — āĻ˛āĻŋāĻ¨āĻžāĻ•ā§āĻ¸ āĻŽā§āĻ¯āĻžāĻ¨ āĻĒā§‡āĻœ
strace(1) — āĻ˛āĻŋāĻ¨āĻžāĻ•ā§āĻ¸ āĻŽā§āĻ¯āĻžāĻ¨ āĻĒā§‡āĻœ
Nginx - āĻŽāĻĄāĻŋāĻ‰āĻ˛ ngx_http_sub_module
āĻ•āĻ°āĻžāĻ¤, āĻšā§‡āĻ‡āĻ¨āĻ¸ā§‹ āĻāĻŦāĻ‚ āĻŦā§ˆāĻĻā§āĻ¯ā§āĻ¤āĻŋāĻ• āĻ•āĻ°āĻžāĻ¤ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡

āĻ‰āĻ¤ā§āĻ¸: www.habr.com

āĻāĻ•āĻŸāĻŋ āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ āĻœā§āĻĄāĻŧā§āĻ¨