728x90


#!/bin/bash
# 떠돌이별 목록.

for planet in Mercury Venus Earth Mars Jupiter Saturn Uranus Neptune Pluto
do
  echo $planet
done

echo

# 따옴표로 묶인 전체 '목록'은 한 개의 변수를 만들어 냅니다.
for planet in "Mercury Venus Earth Mars Jupiter Saturn Uranus Neptune Pluto"
do
  echo $planet
done

exit 0

 


#!/bin/bash
# 떠돌이별 재검토.

# 각 떠돌이별의 이름과 해(sun)까지 거리를 한 쌍으로 묶음.

for planet in "Mercury 36" "Venus 67" "Earth 93"  "Mars 142" "Jupiter 483"
do
  set -- $planet  # "planet" 변수를 파싱해서 위치 매개변수로 세팅.
  # "--" 를 쓰면 $planet 이 널이거나 대쉬 문자로 시작하는 등의 까다로운 상황을 처리해 줍니다.

  # 원래의 위치 매개변수는 덮어써지기 때문에 다른 곳에 저장해 놓아야 할지도 모릅니다.
  # 배열을 써서 해 볼 수 있겠네요.
  #        original_params=("$@")

  echo "$1              해까지 거리 $2,000,000 마일"
done

# (S.C. 가 확실한 설명을 더 해 줬습니다.)

exit 0
~

 

---------------------------------------------------------------------------------------------------------------------------------


#!/bin/bash
# wh-loopc.sh: "while" 루프에서 10까지 세기.

LIMIT=10
a=1

while [ "$a" -le $LIMIT ]
do
  echo -n "$a "
  let "a+=1"
done           # 아직은 별로 놀랄게 없네요.

echo; echo

# +=================================================================+

# 이제 똑같은 것을 C 형태의 문법으로 해 봅시다.

((a = 1))      # a=1
# 이중 소괄호에서는 변수를 세팅할 때 C 처럼 빈 칸을 넣어도 됩니다.

while (( a <= LIMIT ))   # 이중 소괄호, 변수 앞에 "$"가 없네요.
do
  echo -n "$a "
  ((a += 1))   # let "a+=1"
  # 역시 되는군요.
  # 이중 소괄호를 쓰면 C 문법처럼 변수를 증가시킬 수 있군요.
done

echo

# 이제 C 프로그래머도 Bash 를 쓸 때 편안하게 쓸 수 있겠습니다.

exit 0

 

 

 

 

until

until은 루프 최상단에서 특정 조건을 확인하면서 그 조건이 거짓일 동안 루프를 계속 돌도록 해 줍니다(while과 반대).

until [condition-is-true]
do
command...
done

주의할 점은 until이 몇몇 프로그래밍 언어에서 비슷한 형태와는 다르게 루프 처음에서 끝내는 조건을 검사한다는 것 입니다.

for/in 경우처럼 do를 조건문과 한 줄에 같이 쓰려면 세미콜론을 적어줘야 합니다.

until [condition-is-true] ; do

예 10-17. until 루프


#!/bin/bash

until [ "$var1" = end ] # 테스트 조건이 루프 최상단에 들어갑니다.
do
  echo "변수값을 넣으세요 #1 "
  echo "(끝내려면 end)"
  read var1
  echo "변수 #1 = $var1"
done  

exit 0

728x90
728x90

$((...)) : 변수의 산술 처리 [변수,산술]

 

ex) number=4 echo $(( number << 1 ))

 

2진수

 

2#0101 : 5

2#0011 : 3

 

ex ) echo $(( 2#0101 )) : 5

728x90
728x90

#!/bin/bash

# 최소한 10 개의 매개변수를 줘서 이 스크립트를 실행시키세요. 예를 들면,
# ./scriptname 1 2 3 4 5 6 7 8 9 10

echo

echo "스크립트 이름은 \"$0\"."
# 현재 디렉토리를 나타내는 ./ 가 추가되어 있죠.
echo "스크립트 이름은 \"`basename $0`\"."
# 경로명을 떼어 냅니다('basename' 참고).

echo

if [ -n "$1" ]              # 테스트 할 변수를 쿼우트 해줬습니다.
then
 echo "첫번째 매개변수는 $1"  # # 을 이스케이프 시키기 위해서 쿼우트를 해 줘야 됩니다.
fi 

if [ -n "$2" ]
then
 echo "두번째 매개변수는 $2"
fi 

if [ -n "$3" ]
then
 echo "세번째 매개변수는 $3"
fi 

# ...

if [ -n "${10}" ]  # $9 보다 큰 매개변수는 {중괄호}로 감싸야 됩니다.
then
 echo "열번째 매개변수는 ${10}"
fi 

echo

exit 0

 


variable1_=$1_
# 이렇게 해주면 위치 매개 변수가 비어있더라도 에러를 막아줍니다.

critical_argument01=$variable1_

# 실제로 변수를 쓸 곳에서 다음처럼 해주면 에러 방지용 문자가 잘려 나갑니다.
variable1=${variable1_/_/}   # $variable1_ 이 "_"로 시작할 때만 부효과(Side effects)가 있습니다.
# 9장에서 논의할 매개변수 치환중의 한 가지 방법을 써서 변경 패턴을 삭제해 줍니다.

#  좀 더 확실한 방법은 원하는 위치 매개변수가 넘어 왔는지 테스트를 해 보는 것입니다.
if [ -z $1 ]
then
  exit $POS_PARAMS_MISSING
fi  

 

 - 성공여부와 상관없이 다음 명령어 실행

한 줄에 여러 명령어를 순서대로 배열할 때는 ;를 구분자로 사용합니다. 아래 명령어는 test를 만든 후에 test 디렉토리로 이동합니다. 

1
mkdir test;cd test

&& - 성공한 경우에 다음 명령어 실행

&&의 의미

&&는 앞의 명령어가 실행되었을 때 성공한 경우에 다음 명령어를 실행합니다. ;와는 다릅니다. 예를들어보죠. 아래와 같은 명령어가 있을 때

1
mkdir test; cd test; touch abc

test 디렉토리가 이미 있어서 아래와 같은 상황이라고 해보죠. 

mkdir test(실패); cd test; touch abc

이 경우 cd test가 실행되고, touch abc도 실행됩니다. 

 

반면에 아래의 경우는 cd test와 touch abc가 실행되지 않습니다. 

mkdir test(실패) && cd test && touch abc

성공&실패와 무관하게 연속적으로 실행해야 할 명령이 있을 때 ;를 씁니다. 이전 명령이 성공했을 때 다음 명령을 실행하려면 &&를 씁니다. 대체로 &&를 쓰는게 좋을 때가 많습니다. 좀 더 정확하게는 &&는 이전 명령어의 실행결과가 참(true)일 때만 다음 명령을 실행합니다. 아래 내용은 참고삼아 읽어보세요. 

 

if test condition-true if [ condition-true ] 은 완전히 똑같은 표현입니다. [  test 명령어를 부르는 토큰이기 때문에 ] 가 꼭 필요하진 않지만 새 버전의 bash 에서는 그래도 있어야 됩니다.

참고: test 명령어는 파일 타입을 테스트하거나 문자열을 비교해 주는 bash 내장 명령이기 때문에, Bash 스크립트안에서 test sh-utils 패키지의 일부분인 /usr/bin/test 외부 명령어를 부르지 않습니다. 비슷하게, [ /usr/bin/test로 링크되어 있는 /usr/bin/[를 부르지 않습니다.






2) set 명령과 위치 매개변수

        -> 위치 매개변수를 재설정하면 기존의 값들은 잃어버리게 된다

        -> 모든 위치 매개변수의 설정을 해제하려면 'set --' 명령을 사용한다

        -> $0는 언제나 스크립트 이름을 가리킨다

            $ cat test
            #!/bin/bash
            echo The name of this script is $0
            echo The arguments are $*
               
                => $*은 모든 위치 매개변수를 의미한다

            set $(date)
            echo The date is $2, $3, $6.


            $ ./test a b c d
            The name of this script is ./test
            The arguments are a b c d
            The date is 11., 21., KST.


            $ cat test
            #!/bin/bash
            name=${1:?"requires an argument"}
            echo Hello $name

                => 특수 변수 변경자인 :?는 $1이 값을 가지고 있는지 검사한다

                => 지정한 값이 없으면 스크립트를 종료하고 메시지를 출력한다


            $ ./test
            ./test: line 2: 1: requires an argument

            $ ./test aaa
            Hello aaa


        -> $*와 $@의 차이

            => $*와 $@의 의미는 큰 따옴표 안에서 사용되는 경우에만 서로 다르다
           
            => 큰 따옴표 안에 $*를 사용하는 경우에는 매개변수들이 단일 문자로 취급된다

            => $@를 큰 따옴표 안에 사용하면 매개변수들은 서로 분리된 문자로 인식된다

                $ set 'aaa bbb' ccc ddd
                $ for i in $*
                > do
                > echo $i
                > done
                aaa
                bbb
                ccc
                ddd

                $ set 'aaa bbb' ccc ddd
                $ for i in "$*"
                > do
                > echo $i
                > done
                aaa bbb ccc ddd

                    > $*이 큰 따옴표 안에 들어있기 때문에 전체 매개변수를 하나의 문자열로 처리한다


                $ set 'aaa bbb' ccc ddd
                $ for i in $@
                > do
                > echo $i
                > done
                aaa
                bbb
                ccc
                ddd

                $ set 'aaa bbb' ccc ddd
                $ for i in "$@"
                > do
                > echo $i
                > done
                aaa bbb
                ccc
                ddd

                    > $@가 큰 따옴표 안에 있으므로 각 위치 매개변수를 개개의 문자열로 처리한다


출처: https://linuxism.ustd.ip.or.kr/57 [linuxism]

728x90

'Linux' 카테고리의 다른 글

[쉘 스크립트] 반복문 예제  (0) 2022.02.24
[쉘스크립트]$((...))  (0) 2022.02.24
[쉘스크립트] 변수 치환  (0) 2022.02.23
0 1 2 (표준입력, 표준출력, 표준 에러)  (0) 2022.02.22
[쉘스크립트] 2022-02-22 예제  (0) 2022.02.22
728x90

#!/bin/bash

# 변수: 할당과 치환

a=375
hello=$a

#-------------------------------------------------------------------------
# 변수를 초기화 할 때, = 양쪽에는 빈 칸이 들어가면 안 됩니다.

#  "VARIABLE =value" 라고 하면,
#+ 스크립트는 "VARIABLE" 명령어가 "=value"란 인자를 갖는것처럼 인식합니다.

#  "VARIABLE= value" 라고 하면,
#+ 스크립트는 "value" 명령어가 환경변수 "VARIABLE"을 ""로 세팅해서 
#+ 실행되는 것으로 인식합니다.
#-------------------------------------------------------------------------


echo hello    # 변수 참조가 아니고 그냥 "hello"란 문자열입니다.

echo $hello
echo ${hello} # 위와 똑같습니다.

echo "$hello"
echo "${hello}"

echo

hello="A B  C   D"
echo $hello
echo "$hello"
# 이제 echo $hello 와 echo "$hello" 는 다른 결과가 나옵니다.
# 변수를 쿼우팅해주면 공백문자가 보존됩니다.

echo

echo '$hello'
#  작은 따옴표로 변수를 쿼우팅해주면 "$"가 문자 그대로 해석되기 때문에
#+ 변수 참조가 일어나지 않습니다.

# 쿼우팅의 종류에 따라 달라지는 결과에 주목하세요.


hello=    # 널 값을 갖도록 세팅.
echo "\$hello (널 값) = $hello"
#  변수를 널 값으로 세팅하는 것과 unset 하는 것은 비록 결과는 같지만
#+ 엄연히 다릅니다(다음 참조).

 

unset hello #hello 변수에 널값 셋팅

 

728x90
728x90

# 주석 [ # ]

 

#으로 시작하는 줄은 주석입니다.

 

# 명령어 구분자 [ ; ]

 

두 개 이상의 명령어를 한 줄에서 같이 쓸 수 있게 해줍니다.

 

# 점 (dot) 명령어 [ . ]

 

source 명령어와 동일합니다.

 

"점"(dot)이 정규 표현식(regular expression) 으로 해석될때는, 한 개의 문자와 일치됩니다.

 

# 명령어 치환 (command substitution) [ ` ] backtics(백틱)

 

`명령어` 라고 하면 명령어의 결과를 변수값으로 설정할 수가 있습니다. 다른 말로 backticks나 역쿼우트(backquote)라고도 합니다.

 

# 널 명령어(null command) 쉘의 "NOP"(no op, 아무 동작도 않함)에 해당합니다. [ : ] 

 

쉘 내장 명령인 true의 동의어라고도 볼 수 있습니다. 주의할 점은 :은 bash 내장 명령이기 때문에 종료 상태는 0이라는 것 입니다.

 

예제 )

if condition

then : # 아무것도 안하고 계속 진행

else

 어떤 작업

fi


# 배열 초기화 [ Array=(element1 element2 element3) ]

 

# 명령어 그룹 [ (a=hello; echo $a) ]

 

a=123

( a=321; )

 

echo "a = $a" # a = 123

# 소괄호 안의 "a"는 지역변수 처럼 동작합니다.

 

# 중괄호 확장 [ { } ]

 

grep Linux file*.{txt.html*}

 

# "fileA.txt" , "file2.txt", "fileR.html", "file-87.html" 등등의 파일에서

# "Linux"가 들어 있는 것을 모두 찾음

 

빈 칸은 쿼우트(quote)나 이스케이프(escape)되지 않고 중괄호에서 쓰일 수 없습니다.

echo {file1,file2}\ :{\ A," B",' C'}

 

# file1 : A file1 : B file1 : C file2 : A file2 : B file2 : C

 

 

예제 1) 코드 블럭과 I/O 재지향

 

#!/bin/bash

# /home/rsccmw/logtest/file.txt 읽기

 

File=/home/rsccmw/logtest/file.txt

 

{

read line1

read line2

} < $File

 

echo "$File.txt 파일의 첫번째 줄:"

echo "$line1"

echo

echo "$File 파일의 두번째 줄:"

echo "$line2"

 

exit 0

 


#!/bin/bash
# str-test.sh: Testing null strings and unquoted strings,
# but not strings and sealing wax, not to mention cabbages and kings...
# (옮긴이: ??? :)

# if [ ... ]  를 쓸께요.


#  문자열이 초기화 안 됐다면 정해진 값을 갖지 않는데
#+ 이런 상태를 "널"(null)이라고 부릅니다(0 과는 다릅니다).

if [ -n $string1 ]    # $string1 은 선언도 초기화도 안 됐습니다.
then
  echo "\"string1\" 은 널이 아닙니다."
else  
  echo "String \"string1\" 은 널입니다."
fi  
# 틀렸죠.
# 초기화가 안 됐는데도 널이 아닌 것으로 나오네요.


echo


# 다시 해보죠.

if [ -n "$string1" ]  # 이번엔 $string1 을 쿼우트 시켜서 해보죠.
then
  echo "\"string1\" 은 널이 아닙니다."
else  
  echo "\"string1\" 은 널입니다."
fi      # 테스트문에서는 문자열을 꼭 쿼우트 시키세요!


echo


if [ $string1 ]       # 이번엔 달랑 $string1 만 두고 해보죠.
then
  echo "\"string1\" 은 널이 아닙니다."
else  
  echo "\"string1\" 은 널입니다."
fi  
# 이건 잘 되네요.
# 문자열을 쿼우트 시키는 게("$string1") 좋은 습관이긴 하지만
# [ ] 테스트 연산자는 혼자 쓰이면 문자열이 널인지 아닌지를 잘 알아냅니다.
#
# Stephane Chazelas 가 지적한 것처럼,
#    if [ $string 1 ]   는 인자가 "]" 하나고,
#    if [ "$string 1" ]  는 인자가 빈 "$string1"과 "]", 두 개입니다.



echo



string1=initialized

if [ $string1 ]       # , $string1 을 다시 혼자 써보죠.
then
  echo "\"string1\" 은 널이 아닙니다."
else  
  echo "\"string1\" 은 널입니다."
fi  
# 역시 결과가 맞게 잘 나오죠.
# 마찬가지로 이유로 쿼우트 해주는 것이("$string1") 좋습니다. 왜냐하면...


string1="a = b"

if [ $string1 ]       # $string1 을 또 혼자 씁니다.
then
  echo "\"string1\" 은 널이 아닙니다."
else  
  echo "\"string1\" 은 널입니다."
fi  
# 이제 "$string1"을 쿼우트 해 주지 않으면 틀린 결과가 나옵니다!

exit 0

728x90

'네트워크' 카테고리의 다른 글

표준 입력,출력,에러 / 파일 디스크립터  (0) 2022.02.25
프록시  (0) 2022.02.22
HTTPS 통신에대한 생각정리  (0) 2022.02.21
SSL / TLS protocol and Cipher suite  (0) 2022.02.18
728x90

출처 : https://wiki.kldp.org/HOWTO/html/Adv-Bash-Scr-HOWTO/io-redirection.html#IOREDIRREF 

 

I/O 재지향

쉘은 항상 기본적으로 표준입력(stdin, 키보드), 표준출력(stdout, 스크린), 표준에러(stderr, 스크린에 뿌려질 에러 메세지) "파일들"을 열어 놓습니다. 이 파일들을 포함해서 열려 있는 어떤 파일이라

wiki.kldp.org

0 표준입력(stdin, 키보드), 1 표준출력(stdout, 스크린), 2 표준에러(stderr, 스크린에 뿌려질 에러 메세지) 

 

 

 

 

# 표준 출력을 파일로 재지향.

# 파일이 없으면 새로 만들고, 있다면 덮어 씁니다.

 

: > filename

 

# >는 "filename"의 길이가 0이 되도록 잘라줍니다.

# :는 아무 출력도 안 하는 더미 플레이스홀더(plcaeholder)로 동작합니다.

 

>>

 

# 표준 출력을 파일로 재지향.

# 파일이 없으면 새로 만들고, 잇으면 파일 끝에 덧붙입니다.

 

2>&1

 

# 표준 에러를 표준 출력으로 재지향

# 에러 메시지는 표준 출력의 자격으로 스크린에 보내집니다.

 

i>&j

 

# i번 파일 디스크립터를 j번 파일 디스크립터로 재지향.

# i가 가르키는 파일의 모든 출력은 j가 가르키는 파일로 보내집니다.

 

>&j

 

# 기본적으로 1번 파일 디스크립터(표준출력)을 j번 파일 디스크립터로 재지향.

# 모든 표준출력은 j가 가르키는 파일로 보내집니다.

 

0<

 

#파일에서 입력을 받도록 해줍니다.

# ">" 와 짝을 이루는 명령어로, 종종 같이 쓰입니다.

#

# grep search-word < filename

 

|

 

# 프로세스와 명령어를 엮어주는 일반적인 목적의 툴

# 모든 *.txt 파일의 출력을 정렬한 다음, 중복되는 줄을 제거하고

# 마지막으로 그 결과를 "result-file"에 저장

 

 

 

파일 디스크립터 닫기

n<&-

n번 입력 파일 디스크립터를 닫아 줍니다.

0<&-, <&-

표준입력을 닫아 줍니다.

n>&-

n번 출력 파일 디스크립터를 닫아 줍니다.

1>&-, >&-

표준출력을 닫아 줍니다.

자식 프로세스는 열려 있는 파일 디스크립터를 상속 받는데 이것 때문에 파이프가 동작합니다. 파일 디스크립터가 상속되길 바라지 않는다면 그 파일 디스크립터를 닫으면 됩니다.

728x90
728x90

#UID를 검사하여 특정 UID인경우만 쉘 파일을 실행할수 있도록 하는 코드​

더보기

#!/bin/bash
# 루트로 실행시키세요.

LOG_DIR=home/rsccmw/logtest
SHELL_UID=1000 # $UID가 1000인 유저만이 이 파일을 실행시킬수 있습니다.
E_NOTROOT=67 # 루트가 아닐 경우의 종료 에러.

if [ "$UID" -ne "$SHELL_UID" ]
then
 echo "이 스크립트는 루트로 실행시켜야 됩니다."
 exit $E_NOTROOT
fi

 

# 인자가 있는지 없는지 테스트 하는 코드

더보기

문자열 비교 연산자

-n : 문자열이 NULL이 아님


if [ -n "$1" ]
# 명령어 인자가 존재하는지 테스트(non-empty).
 then
  factor=$1
  echo "factor is ${factor}"
 else
  factor=empty
  echo "factor is ${factor}"
fi

 

# cd 명령어 (실제로 이동 되지는 않음 백그라운드에서 이동하는듯?)

더보기

#!/bin/bash

cd /home/rsccmw/logtest
touch success.txt

echo "이동완료"

 

# 눈으로는 이동 안한것처럼 보이지만 logtest폴더에 가보면 success.txt가 생겨져있음

 

dev/null &1 &2 2>&1 가 뭔데?

 

#!이 뭔데?

더보기

The #! 은 스크립트의 제일 앞에서 이 파일이 어떤 명령어 해석기의 명령어 집합인지를 시스템에게 알려주는 역할을 합니다. #! 은 두 바이트 [1]  "매직 넘버"(magic number)로서, 실행 가능한 쉘 스크립트라는 것을 나타내는 특별한 표시자입니다(man magic을 하면 재미있는 주제의 이야기들을 볼 수 있습니다). #! 바로 뒤에 나오는 것은 경로명으로, 스크립트에 들어있는 명령어들을 해석할 프로그램의 위치를 나타내는데 그 프로그램이 쉘인지, 프로그램 언어인지, 유틸리티인지를 나타냅니다. 이 명령어 해석기가 주석은 무시하면서 스크립트의 첫 번째 줄부터 명령어들을 실행시킵니다. [2]

 

ex)

#!/bin/sh
#!/bin/bash
#!/usr/bin/perl
#!/usr/bin/tcl
#!/bin/sed -f
#!/usr/awk -f​

 

 

#date 명령어

더보기

echo "올해가 시작한뒤로 지금까지 `date +%j` 일이 지났습니다."
# 날짜가 형식화 하려면 포매터 앞에 '+'를 써야합니다.
# %j는 오늘이 연중 몇 번째 날인가를 알려줍니다.

echo "1970/01/01 이후로 지금까지 `date +%s`초가 지났습니다."
# %s는 "UNIX 에폭(epoch)"이 시작한 뒤로 현재까지 몇초가 지났는지를 알려줍니다.
# 이걸 도대체 어디다 써 먹죠?

prefix=temp
suffix=`eval date +%s`
filename=$prefix.$suffix
echo $filename

 

cal 명령어 : 달력 보여주기

sleep 명령어 : 쉘의 wait 루프와 같음 주어진 초단위 시간 동안 아무일도 안 하면서 멈추어 있습니다.

who 명령어 : 시스템에 현재 로그인해 있는 모든 사용자를 보여줍니다.

ㄴ who -m : 현재 사용자에 대한 자세한 정보를 보여줌현재 사용자의 터미널 이름 보여주기 tty 명령어 : 현재 사용자의 터미널 이름을 보여줍니다.

wall 명령어 : "write all"의 앞글자를 따서 wall이 된 이 명령어는 현재 로그인 되어 있는 모든 사용자에게 메세지를 날립니다. 원래는 유용한 시스템 관리자용 도구입니다. 예를 들어, 시스템에 문제가 생겨서 잠깐 동안 다운 시켜야 할 필요가 생겼을 때 모든 사용자들에게 경고를 할 수 있게 해 줍니다.

 

logrotate 명령어 : 이 유틸리티는 시스템 로그 파일들을 적당하게 로테이트 시키고, 압축하고, 지우고, 메일을 보내는 일들을 처리해 줍니다. 보통 crond logrotate를 가장 기본적인 하루 일과로 삼습니다.

/etc/logrotate.conf에 적당한 내용을 적어주면 시스템 전체 로그뿐만 아니라 개인용 로그 파일을 관리할 수 있습니다.

728x90
728x90

# Proxy

 프록시서버(Proxy)는 클라이언트가 자신을 통해 다른네트워크 서비스(Node.js, Spring, WAS(Tomcat))에 간접적으로 접근할 수 있게 하는 컴퓨터 시스템이나 응용프로그램을 일컫는다.

 

 중계자(관리자)로서 로드밸런싱, Reverse Proxy, 캐싱 등의 작업을 수행한다. 

# Reverse Proxy

 클라이언트에게서 서버의 정보를 감추는 작업

 (서버 내부적으로 파일들이 어느 폴더에 있는지, 어느 서비스가 어느 포트에서 작업중인지 등)

 

 클라이언트와 WAS 사이의 중계자로서 둘 사이의 통신을 담당한다.

 리버스 프록시서버를 통해 응답을 내려주기 때문에, 실제 서버의 정보를 알 수 없게 된다.

 또한 WAS는 서버확장에 있어 자유로워지는 이점이 생긴다.

 

 클라이언트가 요청하는 End Point 는 프록시서버의 도메인이다.

 

[Reverse Proxy의 캐싱] - 서버의 성능향상에 초점

클라이언트들이 자주 요청할 리소스들을 리버스 프록시에 캐싱하여 요청이 들어오면 바로 건네 줌

# Forward Proxy

 서버에게서 클라이언트를 감추는 작업

 요청받는 서버는 포워드 프록시 서버를 통해서 요청을 받기에 클라이언트의 정보를 알 수 없게 된다.

 

 [Forward Proxy의 캐싱] - 클라이언트의 성능향상에 초점

 빈번히 사용될 리소스들을 포워드 프록시에 캐싱하여 서버까지 요청할 필요 없이 프록시에서 받아오게 함

728x90

+ Recent posts