[Nginx] SSL 적용


사전에 적용할 Domain의 SSL 인증서가 준비 되어야 합니다.

인증서는 키값과 인증값 두 가지 정도만 준비되어야 하고 적용할 서버에 Nginx도 설치 되어 있어야 합니다.


[수행 환경]

Centos 8.4
Nginx 설치 위치 : /usr/local/nginx/
인증서 위치 : /home/xxxx/data

[환경 파일 OPEN]
cd /usr/local/nginx/conf
vi nginx.conf

 

[환경 파일 수정]
http {
    include       mime.types;
    default_type  application/octet-stream;
    ....

server {
listen 443 ssl                                                                                             #443 ssl 설정 한다.
server_name www.domainName.com www.test.domainName.com;       #사용할 도메인명을 넣는다.
ssl_certificate_key /home/xxxx/data/newkey.pem;                                   #SSL 인증서 키값 위치 설정
ssl_certificate /home/xxxx/data/cert.pem;                                                 #SSL 인증서 인증값 위치 설정

        location / {                                                                                          #도메인만 치고 들어왔을 때 설정
            proxy_redirect off;
            proxy_pass_header Server;
            proxy_set_header Host $http_host;
            proxy_set_header X-Real-Ip $remote_addr;
            proxy_set_header X-Forwarded-Proto $scheme;
            index  index.html index.htm;
        }

error_page   500 502 503 504  /50x.html;                                                  #에러페이지 설정
        location = /50x.html {
            root   html;
        }

server {                                                                                                      #서버 설정
            if ($host = test.domainName.com) {
               return 301 https://$host$request_uri;
            }

            listen 80;
            server_name test.domainName.com;
            return 404;
     }
}

 

반응형

'운영체제(OS) > Linux,Unix' 카테고리의 다른 글

[Nginx] Cache 적용  (0) 2023.07.13
[Centos] 버전 확인  (0) 2023.07.11
[Centos] 방화벽 설정  (0) 2023.07.05
[Unix/Linux] awk 사용법  (0) 2017.09.30
[Unix/Linux] vi, vim ^M 제거  (0) 2017.09.28

[Centos] 버전 확인


 

Cent OS 버전 확인 방법에 대해 알아보겠다.


[수행 환경]

Centos 8.4

[버전 확인 명령어 1]
cat /etc/redhat-release
[결과]
CentOS Linux release 8.4.2105

 

[버전 확인 명령어 2]
cat /etc/*release*
[결과]
CentOS Linux release 8.4.2105
Derived from Red Hat Enterprise Linux 8.4
NAME="CentOS Linux"
VERSION="8"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="8"
PLATFORM_ID="platform:el8"
PRETTY_NAME="CentOS Linux 8"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:8"
HOME_URL="https://centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"
CENTOS_MANTISBT_PROJECT="CentOS-8"
CENTOS_MANTISBT_PROJECT_VERSION="8"
CentOS Linux release 8.4.2105
CentOS Linux release 8.4.2105
cpe:/o:centos:centos:8

 

반응형

'운영체제(OS) > Linux,Unix' 카테고리의 다른 글

[Nginx] Cache 적용  (0) 2023.07.13
[Nginx] SSL 적용  (0) 2023.07.12
[Centos] 방화벽 설정  (0) 2023.07.05
[Unix/Linux] awk 사용법  (0) 2017.09.30
[Unix/Linux] vi, vim ^M 제거  (0) 2017.09.28

[Spring Boot] 이미지 캐싱, CDN 기능 설정


 

클라이언트에서 이미지 로딩시 매번 서버에 저장된 이미지를 조회하게 되면 성능이 저하가 생긴다.이를 해결하기위해 spring boot 자체에서 제공하는 이미지 캐싱 기능을 설정 해 보도록 하겠다.


[수행 환경]

Windows 10
IntelliJ
java 11
gradle-7.6


[application.yml 설정]
spring:
  image:
    path: file:///C:Image/  #<----- 마지막에 꼭 / 를 넣어준다.
참고로 linux 환경인 경우 path를 file///home/service/image/ 식으로 넣어줍니다.

 

[WebConfig 클래스 작성]
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.CacheControl;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

import java.time.Duration;

@Configuration
public class WebConfig implements WebMvcConfigurer {
    private String connPath = "/imagePath/**";   //<------------ 서버를 기동하면 http://localhost/imagePath/test.jpg
    public static String resourcePath;

    @Value("${spring.image.path}")
    public void setPath(String resourcePath) {this.resourcePath = resourcePath;}

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        CacheControl cacheControl = CacheControl.noCache().mustRevalidate().cachePrivate().sMaxAge(Duration.ofDays(1));
        registry.addResourceHandler(connPath)
                .addResourceLocations(resourcePath)
                .setCacheControl(cacheControl);
    }
}

 

[실행 후 확인]
http://127.0.0.1/imagePath/test.jpg
1. 크롬 브라우져를 켠다
2. F12를 누른다. 
3. Network 메뉴를 누른다.
4. http://127.0.0.1/imagePath/test.jpg 호출한다. 그럼 응답으로 200이 나온다.
5. 다시한번 http://127.0.0.1/imagePath/test.jpg 호출 한다 캐싱이 제대로 됐다면 304가 나온다.

 

 

반응형

[Spring Boot] swagger 설정 방법


 

서버에서 제공해주는 API를 간단하게 테스트 해볼 수 있는 있는 도구인 Swagger 설정 방법에 대해 알아보겠다.

 


[수행 환경]

Windows 10
IntelliJ
java 11
gradle-7.6


[Gradle 설정]
//swagger
implementation 'io.springfox:springfox-swagger2:2.9.2'
implementation 'io.springfox:springfox-swagger-ui:2.9.2'

 

SwaggerConfig 클래스 작성
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiKey;
import springfox.documentation.service.AuthorizationScope;
import springfox.documentation.service.SecurityReference;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spi.service.contexts.SecurityContext;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

import java.util.Arrays;
import java.util.List;

@Configuration
@EnableSwagger2
public class SwaggerConfig {

    @Bean
    public Docket api() {
        return new Docket(DocumentationType.SWAGGER_2)
                .useDefaultResponseMessages(false)
                .host("127.0.0.1:8081")
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.test"))
                .paths(PathSelectors.ant("/v1/**"))
                .build()
                .securityContexts(Arrays.asList(securityContext()))
                .securitySchemes(Arrays.asList(apiKey()));
    }

    private ApiKey apiKey() {
        return new ApiKey("Authorization", "Authorization", "header");
    }

    private SecurityContext securityContext() {
        return springfox
                .documentation
                .spi.service
                .contexts
                .SecurityContext
                .builder()
                .securityReferences(defaultAuth()).forPaths(PathSelectors.any()).build();
    }

    List<SecurityReference> defaultAuth() {
        AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything");
        AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];
        authorizationScopes[0] = authorizationScope;
        return Arrays.asList(new SecurityReference("Authorization", authorizationScopes));
    }
}

 

[사용 예제] testController
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@Slf4j
@RequestMapping("/v1")
@RestController
@AllArgsConstructor
@Api(tags = {"01. 테스트 API"})
public class TestContorller {
    private final UserClient userClient;

    @GetMapping("/test")
    @ApiOperation(value = "test 테스트")
    public String test() {
        return "안녕";
    }
}

 

[실행 후 접속 방법]
http://127.0.0.1:8081/swagger-ui.html#

 

반응형

+ Recent posts